A missed Angel Di Maria penalty on 16 minutes galvanised the home side and they took the lead through Reus, who took advantage of some slack Madrid defending to round Iker Casillas and slot home.
The Dortmund playmaker wasted little time in doubling his tally as he fired home a rebound from Robert Lewandowski's shot as the hosts reduced their aggregate deficit to one before the break.
Real had their chances in the second half but in a night when goalkeepers had the final say, Casillas denied numerous Dortmund efforts to ensure they secured a place in the final four.
Lewandowski returned to lead the line for Dortmund having missed the first leg through suspension and his presence was immediately felt.
Real placed nine outfield players behind the ball as the Polish striker chested the ball down and looked to attack, but weight in numbers ensured Casillas was not tested.
Madrid could have increased their advantage after quarter-of-an-hour when Slovenian referee Damir Skomina awarded them a penalty.
Dortmund right-back Lukasz Piszczek jumped to intercept Fabio Coentrao's cross, but despite having his arm tucked behind his back as he rotated, Skomina pointed to the spot.
A chorus of boos from the Westfalenstadion crowd turned into gasps as Weidenfeller dove to his left to save a poor hip-high penalty from Di Maria, who appeared to lose his footing on approach to the ball.
Equally, Dortmund too should have broken the deadlock as Lewandowski brilliantly pulled the ball back as Daniel Carvajal looked to shepherd it out.
Reus faked Pepe out of play before squaring to Henrikh Mkhitaryan, who side-footed wide from eight yards with the goal at his mercy.
Real were clearly rattled by the early bout of pressure and it was Pepe who succumbed as he sold Casillas out.
The Madrid centre-back attempted to guide Manuel Friedrich's long ball back to his goalkeeper but got it terribly wrong as Reus was allowed to nip in, before rounding Casillas and tucking the ball away coolly.
Another mistake opened the door for Dortmund's second, Asier Illarramendi the guilty party this time, as he gifted the ball to Reus in midfield.
Reus charged forward before sliding a precision ball through to Lewandowski, whose curling shot was just tipped onto the post by the fingertips of Casillas.
Such was Madrid's luck, the ball ricocheted off the woodwork into the path of Reus, who was surrounded by three white shirts, but still managed to blast home the rebound to reduce Dortmund's arrears to one.
Gareth Bale gave Mats Hummels the slip in the right-hand corner, before sliding a shot across the face of goal which was just wide and too far ahead of the onrushing Karim Benzema.
With Dortmund wobbling, Benzema found himself clean through and got round Weidenfeller, who sprawled out on the edge of the box, before Hummels slid in with a goal-saving tackle.
Reus, who was sensational all night, ensured Dortmund's lull was only temporary as he broke on a backpedalling Madrid defence after a neat chest-pass from Lewandowski.
Dortmund's playmaker threaded an exquisite ball through for Mkhitaryan, who rounded Casillas before planting a shot against the post and the Armenian wasted another excellent piece of build-up play from Reus and Lewandowski moments later.
Casillas, without a doubt Real's man of the match, continued to protect the visitors' advantage as he parried Kevin Grosskreutez's first-time shot.
Benzema did well to turn himself into space on the edge of the box but his curling shot came too close to Weidenfeller.
The Dortmund goalkeeper made a stunning save to deny Bale and became the first shot-stopper to keep Real out in 34 matches but it was not enough following Madrid's 3-0 triumph at the Bernabeu.