Bayern Munich will face Chelsea in the Champions League final after beating Real Madrid in a penalty shoot-out following an engrossing semi-final.
Real trailed by a goal from the first leg but two Cristiano Ronaldo strikes - the first a penalty, the second a neat low finish - put them in control.
However, Arjen Robben levelled the tie for Bayern with a spot kick of his own.
No further goals meant a shoot-out, which Bastian Schweinsteiger settled to send his team to a final on home turf.
The midfielder was not his side's only hero in the shoot-out. Goalkeeper Manuel Neuer played a major part, saving Real's first two penalties - from Ronaldo and Kaka, while Mario Gomez and David Alaba scored for Bayern.
This was the second time in major Champions League shoot-outs that Ronaldo had missed from the spot, having also failed for Manchester United in the 2008 final against Chelsea.
It also means the two players currently rated the world's best have missed key penalties in successive days following Lionel Messi's failure from the spot for Barcelona on Tuesday.
It was a terrible end to the game for the Portuguese winger who had earlier put his side in control with two goals in the first 15 minutes.
The first came from the penalty spot as he stroked home - nervelessly on that occasion - after Alaba had handled Angel di Maria's cross in the box. His second was a superb low finish into the corner of the net after being found by Mesut Ozil in the box.
It put Real on course for the final and a potentially memorable double, following a great week in which they have virtually secured the Spanish title with victory at Barcelona on Saturday.
It also set up the enticing prospect of a match-up between Real boss Jose Mourinho - looking for an historic third Champions League title with a third club - against his former charges Chelsea, the only one of his major clubs he has failed to lead to European glory.
Instead it is Jupp Heynckes who could now claim his second European crown on 19 May after leading Real to the trophy in 1998.
His side were simply not prepared to allow their dream of a final on home soil slip away so easily and they hit back with a penalty of their own midway through the first half when Mario Gomez tumbled in the box under a challenge from Pepe and Robben made no mistake from the spot.
It was a fitting reward for the German side, who had matched Real in the first half and shown plenty of attacking intent.
Had Gomez demonstrated the sharpness that had brought him 12 goals in the competition this season Bayern could even have led at the break, but he saw a low shot saved by Casillas and glanced a header wide.
Gomez also had the clearest opportunity of a very tight second half and extra-time but instead of hitting the ball first time with the goal at his mercy, he dwelt and Real cleared.
It seemed only fitting that a tie so evenly matched over two legs should be settled by a penalty shoot-out.
After Neuer's early heroics, Casillas almost rescued his side with two saves of his own from Toni Kroos and Phillip Lahm, but Sergio Ramos then blazed over for the home side, leaving Schweinsteiger to claim his moment of glory.
The win came at a cost for the German side, who will be without Alaba, Holger Badstuber and Luiz Gustavo after they picked up bookings.