Los Blancos nearly pulled off the impossible with two goals in the last 10 minutes, but their heroic comeback came too late to change the course of the tie, as BVB progressed.
The Bundesliga side survived an early onslaught by Jose Mourinho's men to hold onto its 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 Spanish team.
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 its first final berth since 1997, when the club defeated Juventus 3-1 to win the trophy.
Angel Di Maria, benched for the first leg, started for Madrid, 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.
Dortmund was 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 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 halftime 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. Somehow, Lopez recovered to make an unbelievable save.
Lewandowski missed from eight yards, before Madrid finally showed signs of life in the second half. 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.
Benzema would give the home side 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.
With the home fans roaring the team on, Madrid just could not go that last step. 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 its way to taking the Bundesliga’s most high-profile rivalry onto the biggest stage of them all.