Three first-half goals shocked the home side, who were constantly at risk from counter-attacks and set-pieces, unable to defend with confidence.
Sergio Ramos scored twice, the first coming from a simple Luka Modric corner, with no Bayern player marking him. A few minutes later, he and Real had their second when Pepe glanced on Angel Di Maria's cross, and the Spain defender was lurking to fire past Manuel Neuer again.
Cristiano Ronaldo then scored his 15th of his Champions League campaign - a record - by sweeping home a shot at the near post after a textbook counter.
In the second half, Real were content to sit back and absorb any pressure, as Bayern had to score at least five goals to progress.
Despite a couple of chances for Arjen Robben and Franck Ribery (who was lucky not to see red for a slap on Daneiel Carvajal which went unnoticed), Real never seemed troubled.
Ronaldo waited until the last minute to add a clever second, firing a free kick under the wall. This was a hugely disappointing display by Bayern, and Real should now consider themselves favourites for the final in Benfica.
20' - RAMOS GOAL! (Bayern 0-2 Real): Toni Kroos fouls Bale on the right wing. Di Maria curls in a left-footed cross, flicked on by Pepe, and Sergio Ramos is running behind to fire in his second header.
34' - RONALDO GOAL! (Bayern 0-3 Real): Karim Benzema sends the ball forward to Gareth Bale, who takes a few touches to the edge of the box. He slides a pass left for Ronaldo, sprinting to his left, who slots a shot past Neuer at the near post.
37' - RONALDO VOLLEY! Neuer heads away a long ball. It comes to Ronaldo on the left wing, and his volley from 40 yards bounces just in front of goal and wide.
38' - ALONSO BOOKED! OUT OF THE FINAL! Xabi Alonso's lunge on Bastian Schweinsteiger, 30 yards from goal and in front of plenty of Real players, is met with a yellow card, which means he misses the final.
57' - ROBBEN SHOT - The ball is worked to Arjen Robben on the edge of the box, and he curls a shot a fraction wide.
60' - RIBERY CHANCE - Franck Ribery engineers a gap in the Real defence, bursts through and fires in a shot at Casillas' near post that he saves well.
90' - RONALDO GOAL! (Bayern 0-3 Real): Ronaldo sizes up a free kick to the left of the D, and sends a low shot underneath the jumping wall, leaving Neuer rooted to the spot.
Real Madrid are on course to win their 10th Champions League.
Cristiano Ronaldo scored his 15th and 16th Champions League goal this season alone, and has 57 in total for the competition.
This is the first Champions League final Real have reached since 2002.
Bayern Munich had gone nine Champions League games undefeated before two consecutive defeats to Real Madrid.
Real Madrid had just 31% possession.
Is this Real Madrid's year? For such an illustrious and well-backed side, Real Madrid have failed to convert financial dominance into European trophies of late. They are now just one game from their 10th Champions League (or European Cup) success. Despite Carlo Ancelotti's apparent disquiet in the job, this is Ronaldo's and his best chance at winning another Champions League after so many years without victory.
MAN OF THE MATCH
Sergio Ramos (Real Madrid): He managed to stay on the pitch in a high profile match without a booking or sending off, which is always a surprise, and he also scored the first crucial two goals to settle the tie. Ronaldo, Bale and Di Maria all excelled on the counter-attack, but Ramos' defending provided a platform for those attacks.
Bayern Munich: Neuer 5, Dante 5, Boateng 5, Lahm 6, Alaba 6, Schweinsteiger 5, Kroos 5, Ribery 6, Robben 6, Muller 5, Mandzukic 5. Subs: Martinez 5, Pizzaro 6, Gotze 6.
Real Madrid: Casillas 6, Pepe 7, Ramos 8, Coentrao 6, Carvajal 6, Alonso 7, Modric 6, Bale 7, Ronaldo 8, Di Maria 7, Benzema 6. Subs: Varane 6, Casemiro 6, Isco 6.