The point does at least ensure Madrid match a club record 34 games unbeaten in all competitions.
With both sides already qualified, a double from Karim Benzema looked to have Real well set to leapfrog Dortmund and secure a home tie in the second leg of their last-16 tie.
However, Pierre-Emerick Aubameyang reduced the arrears before turning provider for substitute Reus to slide home the leveller.
"Borussia Dortmund games are great, but they are very nerve-racking," said Dortmund coach Thomas Tuchel.
"We made too many wrong decisions, but ultimately it was a great finish to the game for us."
A point does at least ensure Madrid match a club record 34 games unbeaten in all competitions, while Los Blancos are now also ensured of avoiding the likes of Bayern Munich, Manchester City or Paris Saint-Germain in Monday's draw.
"We gave the game away by missing chances to score the third goal," said Real coach Zinedine Zidane.
"We tried everything we could to get first place, but in the end we couldn't achieve it."
Madrid can now face Leicester City, Monaco, Arsenal, Juventus or Napoli in the next round.
And Zidane has no doubt over who he wants to avoid.
"Juventus, for two reasons," said the former Juve midfielder.
Zidane kept his promise to go for victory despite the possibility of an easier draw by remaining in second with Casemiro and James Rodriguez coming into the side in only two changes from Saturday's Clasico.
Dortmund goalkeeper Roman Weidenfeller was busy early on as he parried a Benzema drive before denying Rodriguez twice in quick succession.
Benzema wasn't to be denied on 28 minutes when he bundled home Dani Carvajal's low cross at the back post.
Real only went in ahead at the break, though, thanks to a mixture of good goalkeeping from Keylor Navas and wayward finishing from the visitors.
American wonder kid Christian Pulisic wasted a great chance when his weak effort was placed too close to Navas before the Costa Rica international produced a brilliant stop to turn Andre Schuerrle's free-kick behind.
Another dangerous break moments later saw Gonzalo Castro burst through on goal, but he tried to square for Aubameyang and overhit his pass.
Dortmund were even more profligate at the start of the second period as Ousmane Dembele and Castro fluffed their lines from point-blank range.
Benzema should have got his second of the night when Weidenfeller produced a brilliant save to parry the Frenchman's volley.
However, Benzema only had seconds to stew on that miss as moments later he bulleted home a header from Rodriguez's inch-perfect cross.
Just when Madrid looked in control, Dortmund finally took one of their chances when captain Marcel Schmelzer's run wasn't tracked and his low cross was gratefully tapped home by Aubameyang for his 19th goal in as many games this season.
Cristiano Ronaldo's week had been dominated by unwanted headlines off the field surrounding allegations he stored millions of euros from image rights in tax havens.
And there wasn't much for the Portuguese to shout about as he was held scoreless for a fourth straight Champions League game by more Weidenfeller heroics to turn a rising drive headed for the top corner behind.
Ronaldo then seemed in disbelief as he struck the base of the post with just Weidenfeller to beat.
And that miss proved costly as Aubameyang stormed past Sergio Ramos and produced the perfect cross for Reus to slide home the equaliser.
"Auba was world-class with his pass and I was happy to get on the end of it -- the goal was 99 percent him and one from me," said Reus.