Madrid won the shootout 4-2 after the game had ended goalless.
Holger Badstuber missed the best opportunity to break the deadlock in only the eighth minute when he saw his penalty saved by Casillas, who then got up to block Thomas Muller’s follow-up.
Bayern were close to getting a second penalty when Franck Ribery had his shirt tugged by Sergio Ramos just before he entered the area with just Casillas to beat in the 16th minute.
Madrid’s response came in the 20th minute when Sergio Ramos sent Gonzalo Higuain through on goal, but Hans-Jorg Butt made a save with his legs. Marcelo’s shot from the edge of the area missed Butt’s left-hand post by inches as chances fell at both ends in a lively first half.
Casillas was at his best to tip Danijel Pranjic’s dipping shot over the crossbar before Higuain slid in to reach a low cross from the left, but sent his effort wide of the post. And Casillas was on hand again to deny both Ribery and Miroslav Klose in one on one situations before the interval.
Madrid substitute Rafael van der Vaart should have scored in the 62nd minute when he placed his shot into the side netting from an angle with an open goal to aim at.
At the other end, Bastian Schweinsteiger’s shot grazed the outside of Casillas’ post before Karim Benzema’s cross was met by Cristiano Ronaldo’s header, but Bayern’s back-up goalkeeper Thomas Kraft made an instinctive save to deny him and ensure the game was decided on penalties.
Ronaldo, Van der Vaart, Xabi Alonso and Benzema were all on target for Madrid, while, although Badstuber netted for Bayern, Hamit Altintop and Edson Braafheid missed.