The defending champion withstood a Bayern siege at the Bernabeu, with manager Zinedine Zidane later admitting watching the tense match was not good for his heart.
Though the German champion had 39 shots over the two legs, it is ruthless Real which will contest its third consecutive final after the tie finished 2-2 to give it a 4-3 victory on aggregate.
Ultimately, profligacy in front of goal and a dreadful goalkeeping mistake proved to be Bayern's downfall.
Zidane, the first manager to reach three consecutive Champions League finals since Marcello Lippi between 1996 and 1998, admitted his team suffered.
"We know you can't get to the final of it without suffering, and it's nicer this way. It's not great for your heart, though," he told reporters.
"It's in the DNA of the club. We never stop fighting up to the very last minute, just as the Bayern players did."
Benzema brace, goalkeeping howler
Leading 2-1 following the first leg in Germany, Real got off to the worst possible start after Joshua Kimmich gave Bayern the lead inside three minutes.
But two goals from Karim Benzema, the second following a horrendous error by goalkeeper Sven Ulreich, turned the tie on its head.
Despite an equalizer from James Rodriguez, who is on loan at Bayern from Real Madrid, the German side was unable to find a winning goal -- thanks in part to some sensational goalkeeping from Keylor Navas.
The goalkeeper made eight saves against Bayern to secure his team's progress to a 16th European Cup final.
Bayern also had a possible Marcelo handball claim turned down in the first half, with the Real defender himself later admitting he thought it was a handball.
Jupp Heynckes, Bayern manager, told reporters: "We are very disappointed. My team played an outstanding game.
"I haven't seen Bayern play as well as that for years.
"At this high level you can't make the sort of mistakes we made after halftime.
"We played brilliantly. I think over the course of the two legs we were the better team, but as so often happens in football the game was decided by the small details."
Much like it did in the first leg, Bayern Munich started the match on the front foot.
Knowing he needed a minimum of two goals to progress, Heynckes set his side out to press and hassle Real's backline.
Having clearly targeted makeshift right-back Lucas Vazquez, who is a forward by trade, as the weak link in Real's starting lineup, most of Bayern's early attacks came from David Alaba and Franck Ribery down the left flank.
For the opening goal, Ribery -- who at 35 years of age was at times providing flashbacks to his peak -- arrowed the ball into Robert Lewandowski's feet.
Some fabulous control by the Polish striker allowed him to find Thomas Mueller, whose cross was only partially cleared by an off balance Sergio Ramos. Kimmich pounced.
Ronaldo had a chance to level minutes later. However, it was not long before Real carved out another opportunity.
A brilliant Marcelo cross towards the far post found the unmarked Benzema, who calmly nodded the ball past Ulreich.
As halftime approached, Bayern continued to exploit the flanks left exposed by Marcelo and Vazquez's constant marauding runs.
It was another cross from Kimmich on the right which again caused Real trouble, this time clearly striking Marcelo's arm inside the area.
Despite furious protests -- which continued down the tunnel at halftime -- from the Bayern players, referee Cuneyt Cakir waved away the appeals with a stern frown.
69% possession, 15 chances, but Bayern still out
With Bayern's players fired up and feeling aggrieved, the second half was on a knife edge -- for all of 20 seconds.
Corentin Tolisso's simple back pass to Ulreich seemed harmless enough, but the goalkeeper allowed the ball to pass underneath his body, which gave Benzema a tap-in to an empty net.
Scoring twice in Madrid did not seem beyond Bayern in such form, but ultimately Rafinha's costly error in the first leg and Ulreich's Tuesday proved costly.
Following James's leveller, Mueller even had a chance to put his side through in injury time but, despite dominating with 69% possession and creating 15 chances, Bayern was unable to find that crucial third goal.
Benzema will take the plaudits for his two goals, but Navas -- who came in for criticism after the first leg -- will certainly be the toast of Madrid after numerous spectacular saves.
Real must now wait until Wednesday's second semifinal, between Roma and Liverpool, to find out who it will face in the final on May 26.