Thomas Tuchel's side never said die in their second Group F fixture despite twice falling behind to the reigning European champions.
Following a handball call against Cristiano Ronaldo from an early free-kick, the Portuguese star rallied to fire home for Real from just outside the six-yard box after being found by a clever back-heel from Gareth Bale on 17 minutes.
But Dortmund worked their way back into proceedings and just before the break, equalised when Pierre-Emerick Aubameyang was on hand to comfortably slot home a loose ball from Raphael Guerreiro's thunderous free-kick after Keylor Navas had opted to punch the ball into the back of Raphael Varane.
Zinedine Zidane's Los Blancos side were pushing hard to find the lead during the midway stages of the second half and their second goal came in the 68th minute.
On this occasion, Ronaldo was the provider for Madrid, setting up Karim Benzema at the back post only to see the Frenchman's header hit both the upright and the crossbar, falling nicely for Varane to hammer home from close range.
It was then Dortmund's turn to pile on the pressure, forcing Navas into his best to punch clear Guerreiro's crisp drive before second-half sub Christian Pulisic forced another quality save from the Costa Rican.
Talented American teenager Pulisic then coasted down the right flank before putting a dangerous ball into the area which Aubameyang attempted to send home with a bicycle, only for the ball to fall kindly for Andre Schurrle who produced a blistering left-footed half-volley into the roof of Navas' net.
The result has Dortmund sitting equal first in their group with Madrid having both recorded four points from their two matches, while Sporting Lisbon are just one behind having beaten Legia Warsaw 2-0 tonight.
The next round of Group F fixtures take place on October 18 with Dortmund heading to Lisbon and Real hosting Polish outfit Legia at the Santiago Bernabeu.
2016/17 UEFA Champions League - Group F