Bayern Munich's Arjen Robben (left) collides with Real Madrid's goalkeeper Iker Casillas during their Champions League semifinal second leg soccer match at the Santiago Bernabeu stadium in Madrid.

Madrid - Bayern Munich reached the Champions League final in Madrid on Wednesday, beating nine-time champions Real Madrid 3-1 on penalties after the two-legged match finished 3-3 on aggregate.

Bastian Schweinsteiger slotted home the winning penalty in a thrilling shootout which saw Bayern lead 2-0 at one point after Cristiano Ronaldo and Kaka missed theirs for Real.

However, Toni Kroos and captain Philippo Lahm then missed theirs, with Xabi Alonso getting one back for Real but Sergio Ramos blasted his effort high into the stands and Schweinsteiger made no mistake.

A double from Ronaldo early in the match looked to have set the hosts on their way but an Arjen Robben penalty in the first period made the match all square.

It was some compensation for Robben, who had somehow missed an open goal from two metres out in the first half.

The winners will meet Chelsea in the May 19 final in Munich.

The English side eliminated holders Barcelona on Tuesday 3-2 on aggregate. - Sapa-AFP