Bayern goalkeeper Michael Rensing, striving to become the starter in the upcoming season, made the decisive save by stopping Jonny Evans' shot. Daniel van Buyten then converted the winning penalty.
Both teams wasted one penalty each, with Rensing also stopping Patrice Evra, and Edwin van der Sar knocking away Danijel Pranjic's effort.
There was no extra time.
In a slow-paced game, Mario Gomez hit the crossbar of Van der Sar's goal in the first half and Dimitar Berbatov's overhead attempt also bounced off the post.
Rensing did well to deny Wayne Rooney late in the game.
The match for third-place was also decided on penalties, with Roberto Abbondanzieri making two saves to help Boca Juniors beat AC Milan 4-3 in the shootout.
The goalkeeper stopped shots from Andrea Pirlo and Alexandre Pato, who had also wasted several opportunities in regulation as the game ended 1-1.
Thiago Silva scored for Milan in the 27th but Lucas Viatri tied in the 87th.
Federico Insua also had his penalty saved in the shootout but Viatri then converted for Boca for the decisive score before Pato's blunder.