After Real's Angel Di Maria had an early penalty saved, Marco Reus breathed life into Borussia's semi-final dreams with two goals in an electric opening 45 minutes.

But having been beaten 3-0 in last Wednesday's first leg in Madrid, Dortmund ultimately had too much to do, even if Real captain Iker Casillas admits his side were lucky to reach the semi-finals for the fourth year in succession.

"Maybe it's good for us to receive a wake-up call like that from time to time," said Casillas after Real struggled without Cristiano Ronaldo, who has a niggling knee injury and was left on the bench.

"It's better that it came tonight and not in the upcoming games we have.

"At half-time we had to have mental strength. When the scoreboard says 2-0 after half an hour, you think it will be difficult, especially after missing a penalty, but someimes you have to grind it out."

Dortmund coach Jurgen Klopp delivered on his pre-match promise that his side would bow out in style.

"This game is one for the archives, a video must be made and all teams who lose the first leg 3-0 must be shown it to say, 'it can still happen'," said Klopp.

"Because the game was so good, there is no need to reproach anyone."

Home fans had been praying for something like a repeat of last season's 4-1 victory over Real at the Westfalenstadion in the first leg of the Champions League semi-final, a tie the Bundesliga club went on to win.

Twelve months ago it was Robert Lewandowski who terrorised Real with all four goals, but on this occasion it was Reus who ran Madrid ragged.

Dortmund goalkeeper Roman Weidenfeller kept Borussia's hopes alive when he pushed Di Maria's penalty attempt away with 17 minutes gone after a dubious handball decision against Lukasz Piszczek.

Reus then pounced on Pepe's mistimed header back to his own goalkeeper, rounded Casillas and slotted into the empty net on 24 minutes.

Casillas palmed the ball over the bar after Dortmund centre-back Mats Hummels powered in a header from Reus' free-kick with half an hour gone as the hosts piled on the pressure.

And Reus grabbed his second after more sloppy defending when he snapped up Asier Illarramendi's poor back-pass and fed Lewandowski, and when the Poland star hit the post, Reus tapped home the rebound on 37 minutes to make it 2-0 at the break.

The biggest surprise of the first 45 minutes was that Real did not have a clear chance on goal aside from Di Maria's saved penalty.

Real coach Carlo Ancelotti opted to keep Ronaldo on the bench for the second half but the Italian brought on Isco for Illarramendi in midfield and Real found some composure.

Gareth Bale fired wide with nearly an hour gone, while only desperate defending denied Karim Benzema with the goal at his mercy after he had rounded Weidenfeller.

Henrikh Mkhitaryan then squandered a great chance to make it 3-3 on aggregate when he hit the post having rounded Casillas on 65 minutes and blasted a shot straight at the Madrid goalkeeper moments later.

In the game's dying stages, Bale was denied a penalty and then Weidenfeller cleared with the ball at the Welshman's feet before saving another shot as Dortmund fell short of a dream turnaround.