Real Madrid and Brazil’s international striker Vinicius Junior gave the visitors the lead against the run of play in the first half after Bayern had dominated the opening 20 minutes, with Leroy Sane denied inside 60 seconds by goalkeeper Andriy Lunin.
But Sane sparked the hosts into life early in the second half, beating Lunin at his near post with a piledriver before Harry Kane slotted home from the penalty spot to complete the four-minute turnaround.
Bayern controlled the game from then on yet squandered their lead with seven minutes left when Min-Jae Kim brought down Rodrygo in the box and Vinicius sent Manuel Neuer the wrong way to leave the tie all square.
Bayern started on the front foot with Sane denied from an angle after he was played in by Kane, who then tried an audacious effort from the centre circle which went narrowly over as Lunin scrambled back.
Real were unable to create any opportunities until Toni Kroos opened up Bayern with a pass through the middle of their defence. Kim was at fault for losing Vinicius as he finished calmly past Neuer.
Bayern had a chance to respond when Jamal Musiala was brought down on the edge of the box but Kane’s ferocious free-kick flew wide of the target.
Madrid fashioned the first real attempt of the second period when Bellingham teed up Kroos, who bent a shot powerfully towards goal which Neuer palmed away.
Sane, though, brought the hosts level out of nowhere. The winger drove inside from the right and powered a shot past Lunin.
And just minutes later Lucas Vazquez dangled his left leg out in the box which Jamal Musiala went over and Kane slotted in from the penalty spot despite Jude Bellingham’s best efforts to put him off while he prepared to take it.
Bayern had a chance to double their advantage when Noussair Mazraoui set up Kane and his snapshot was deflected narrowly wide off Antonio Rudiger. From the resulting corner, Kimmich’s out-swinging delivery found the onrushing Eric Dier who headed straight at Lunin.
Bellingham was substituted with 15 minutes left after a subdued performance and his replacement Luka Modric picked out Vinicius, who Neuer denied.
But Vinicius beat the experienced goalkeeper from the spot late on after Kim had clumsily brought Rodrygo down.
Source SkySports