Ronaldo took his tally to nine goals in six Europan appearances this season with a spectacular long-range effort into the top corner after Borja Mayoral’s opener gave Real a 2-0 lead inside 12 minutes.
Pierre-Emerick Aubameyang continued his excellent record against Madrid with a quickfire double either side of half-time to bring Dortmund level.
But despite Vazquez’s late strike, the Germans drop into the Europa League with a record low two points thanks to their better goal difference over APOEL Nicosia, who were defeated 3-0 at Spurs.
Real were, though, hit by a fresh injury blow as Raphael Varane limped off just before half-time.
Zidane made six changes from the side that started Saturday’s 0-0 draw at Athletic Bilbao, but the hosts still made a flying start.
Ronaldo’s fine through ball just evaded Isco, but fell perfectly into the path of Mayoral and the 20-year-old kept his cool to chip the onrushing Roman Burki for his first Champions League goal.
By contrast, Ronaldo had his 114th in the competition moments later as he lined up a sumptuous strike from 25 yards.
However, the warning signs of a Dortmund recovery were in evidence as the first-half wore on as Varane had to make last-ditch challenges to deny Aubameyang and Shinji Kagawa.
Aubameyang has spoken openly of his desire to play for Madrid one day and did his case of a dream move no harm with two classy finishes either side of half-time.
Once Varane limped off, Aubameyang was left free inside the box to plant a diving header inside the far corner two minutes before half-time.
And just four minutes after the break Dortmund were level as Aubameyang dinked a lovely finish over Keylor Navas after his initial effort had been saved by the Madrid goalkeeper.
Ronaldo was wrongly denied his second of the night by the offside flag as he prodded home from close range.
But moments later Madrid did grab the winner when Vazquez’s effort trundled past Burki, who was slow to react as the ball nestled in the bottom corner.
Dortmund should still have earned a share of the points, but Kagawa blasted a glorious chance over the bar as the German giants’ run without a win in the Champions League or Bundesliga stretched to 11 games.