Real Madrid have become the first club to reach three straight European Cup finals for the second time.
Trailing 2-1 after the first leg in Germany, Bayern needed a win at the Bernabeu to reach the final but it finished 2-2 as Real clinched a 4-3 aggregate victory.
Joshua Kimmich scored early on for the German champions from six yards out, before Karim Benzema headed in for Real from Marcelo's fine left-wing cross eight minutes later.
A second for Benzema, after a horrendous mistake from Bayern goalkeeper Sven Ulreich, put Real in control, although Bayern's on-loan James Rodriguez then scored against his parent club to set up a dramatic finale.
Bayern had chances to win it, but Corentin Tolisso and Thomas Muller's efforts were saved by Keylor Navas and Mats Hummels headed wide as the Spanish side held on.
Real will face either Liverpool or Roma in the final in Kiev, Ukraine, on 26 May with Jurgen Klopp's side leading 5-2 before Wednesday's second leg in Rome.
2016: W 1-1 (aet; 5-3pens) v Atlético Madrid, Milan
2017: W 4-1 v Juventus, Cardiff
2018: v Liverpool/Roma, Kyiv