The Bundesliga side survived an early onslaught by Jose Mourinho’s men to hold onto their 4-1 first-leg advantage for most of the game – and had several chances to make the aggregate score even more humiliating for the wasteful hosts.
However, goals from Karim Benzema and Sergio Ramos in the last 10 minutes suddenly set up the most frantic of finishes, but Dortmund hung on to clinch their first final berth since 1997, when they defeated Juventus 3-1 to win the trophy.
Angel Di Maria, benched for the first leg, started for the hosts, while Cristiano Ronaldo also returned after he was rested with a thigh complaint for the Madrid derby victory over the weekend.
Dortmund’s lineup picked itself, with Jurgen Klopp restoring the likes of Marco Reus and Ilkay Gundogan after resting his regulars during Saturday’s Bundesliga win over Fortuna Dusseldorf.
Mourinho’s men knew the magnitude of the task at hand, and their start to the match was suitably relentless. Gonzalo Higuain could have opened the scoring four minutes in, but his shot from Mesut Ozil’s pass was right at Roman Weidenfeller.
Madrid sent a series of warnings Dortmund’s way, but the Germans showed a glimpse of what they were capable of when Gundogan’s clip found Robert Lewandowski completely unmarked for a half-volley right at Diego Lopez.
However, Ronaldo immediately mirrored the chance at the other end, forcing Weidenfeller into a close range block, before Ozil somehow dragged wide when put clean through.
The visitors were then handed a huge blow just before the quarter hour mark, when Mario Gotze limped off clutching his hamstring, and was replaced by Kevin Grosskreutz.
There was enough action in the first 15 minutes to fill an entire half of football, but after weathering the initial storm, Dortmund regained their composure and slowed things down – exactly what Madrid did not want.
In fact, the remainder of the half was rather monotonous by comparison, leaving Mourinho with plenty to
ponder over the break.
But Madrid’s half-time plans were almost wrecked minutes after the restart, had Lewandowski kept his cool when Grosskreutz cleverly found him unmarked inside the box, instead of blasting the ball into orbit.
The Pole nearly made instant amends when latching onto Reus’ slipped pass, sprinting in behind and lashing at goal, but the ball cannoned off the underside of the bar.
There was only one side that looked like scoring, and it was not the team that needed three goals to progress. The quietly impressive Reus teed up Gundogan with a virtually open goal, but somehow, Lopez recovered to make an unbelievable save.
Lewandowski missed from eight yards, before Madrid finally showed signs of life in the second half, but true to form, Di Maria stroked wide of the far post from just inside the box, before Ronaldo poked over from a similarly promising position.
But substitute Benzema would give the hosts a glimmer of hope with seven minutes remaining, side-footing in from close range after Kaka teed up Ozil for the cross from the right.
And it got even better for the Spanish side when Ramos smashed the ball home from Benzema’s layoff – with two minutes plus stoppage time left in the game.
But with the home fans roaring them on, Madrid could not go that last step further, as Dortmund survived a few late scares to edge over the finish line.
Now the only question that remains is whether Wembley will be an all-German affair, with Bayern Munich well on their way to taking the Bundesliga’s most high-profile rivalry onto the biggest stage of them all.