Madrid came from behind to win 2-1 last week in the first leg at the Allianz Arena, and sealed their progression with a 4-3 aggregate triumph despite an unconvincing performance on Tuesday.
Bayern took the lead in the third minute, Joshua Kimmich opening the scoring following a mistake by Madrid captain Sergio Ramos.
The hosts were quick to reply but it was Karim Benzema and not Cristiano Ronaldo, making an outfield record 152nd appearance in the competition, who took centre stage.
Benzema's close-range header ensured Madrid's deficit lasted only eight minutes, and 21 seconds into the second half he was presented with a gift when Ulreich misjudged a back-pass from Corentin Tolisso.
There was another twist as James Rodriguez, on a two-year loan spell at Bayern from Madrid, levelled the tie on the night with a goal he did not celebrate but, despite intense pressure from the away team, Zinedine Zidane's men held on to move within a win of a third successive European title, and now await Liverpool or Roma in the Kiev final on May 26.
So often the hero at the other end for Madrid in games of such magnitude, it was an error from skipper Ramos that enabled Bayern to get the start they needed.
He failed to clear Thomas Muller's lofted cross into the box and Kimmich was there to pounce and slot home with a first-time finish.
Madrid soon levelled matters on the night, capitalising on slack marking from the visitors.
Marcelo delivered a deep cross from the left and Benzema somehow managed to escape the attentions of the returning David Alaba to head beyond Ulreich.
Yet Madrid continued to look vulnerable at the back and Bayern had a strong claim for a penalty dismissed by referee Cuneyt Cakir, who refused to point to the spot after Ramos appeared to bundle over Robert Lewandowski in the box.
A fine run from Franck Ribery and a clever turn and shot from Muller forced a low save from Keylor Navas, who then denied Lewandowski after a surging run from Mats Hummels, the subsequent looping rebound nodded down by Muller but then fired over on the volley by James as Madrid again somehow survived.
Ulreich turned a low Ronaldo drive wide as the frenetic pace continued, with Ramos heading into the side-netting from the resulting corner, before another Bayern penalty appeal was waved away after Marcelo appeared to handle a Kimmich cross.
But all Bayern's impressive work in the first half was undone in a blink as Ulreich's howler left them with a mountain to climb.
Tolisso played a risky backpass and Ulreich, seemingly caught in two minds as he came to claim it, slipped to present Benzema with the ball on a plate in front of an open goal that he tapped in to, despite the best efforts of Hummels.
Navas produced heroics at the other end to turn a vicious deflected Alaba effort behind, and Ramos was again fortunate not to concede a penalty after another challenge on Lewandowski.
The tie should have been put to bed by Ronaldo, but he blazed Marcelo's cross wide with a close-range volley.
And that miss soon loomed large as James gave Bayern hope once more, following up his blocked volley from Niklas Sule's cross and firing through Navas' legs at the near post.
7 - James Rodríguez is the 7th player in Champions League history to both score for and against Real Madrid (also Beckham, Morata, van Nistelrooy, Morientes, Robben and Zamorano). Haunt.— OptaJoe (@OptaJoe) May 1, 2018
Navas had to get down low to keep out a Muller header as Madrid's nerves were further jangled, but a defence that never looked secure withstood the pressure to put Los Blancos within 90 minutes of a fourth European crown in five seasons.
Key Opta stats:
- Real Madrid have reached their 16th European Cup/Champions League final – more than any other side.
- Zinedine Zidane is the first manager to reach three consecutive Champions League finals since Marcello Lippi between 1996 to 1998.
- Under Zinedine Zidane, Real Madrid have never been knocked out in the Champions League, progressing in all nine of their two-legged Champions League ties as well as winning the two finals they've appeared in.
- James Rodríguez is the seventh player in Champions League history to both score for and against Real Madrid (also Beckham, Morata, van Nistelrooy, Morientes, Robben, Zamorano).
- Karim Benzema's first-half equaliser ended a move of 28 completed passes by Real Madrid - only Lucas Digne's goal for Barcelona against Olympiakos (29) has featured more in the Champions League this season.
- Benzema scored his first brace in a Champions League knockout game since February 2014 (v Schalke).
- Bayern Munich have failed to keep a clean sheet in each of their last 14 Champions League away games, their longest such run in the competition.
- Joshua Kimmich has been directly involved in seven goals in the Champions League this season, more than any other Bayern player (five goals, three assists).
- Kimmich is the eighth player to score in both legs of a Champions League knockout tie (exc. final) v Real Madrid and the third Bayern player to do so after Lucio in 2007 and Giovane Elber in 2001.