Ciro Immobile's third Bundesliga goal appeared to have won it for BVB after Kevin De Bruyne had cancelled out Pierre-Emerick Aubameyang's opener, only for Naldo to power home a trademark header four minutes from time.
The searingly hot atmosphere inside Dortmund's Signal Iduna Park appeared to get the better of Wolfsburg defender Robin Knoche in the opening 60 seconds. Ilkay Gündogan latched onto the German international's sloppy first touch, but Aubameyang could only head the ensuing cross over the bar. The Wolves went even closer to breaking the deadlock through De Bruyne, before BVB got their noses in front after eight minutes when Aubameyang tucked away Immobile's smart left-wing cross.
The pendulum continued to swing in much the same vein as chances came and went at either end for Mats Hummels and Ivan Perisic. Wolfsburg went into the contest as FC Bayern München's nearest pursuers for a reason, though, and duly levelled matters in the 29th minute. Sebastian Kehl upended Luiz Gustavo on the edge of the BVB area, with De Bruyne sending the resulting free kick over the wall and beyond the despairing clutches of Mitch Langerak for his third league strike of the campaign.
Naldo spoils the party
Dortmund's Australian shotstopper redeemed himself with a sprawling save at the feet of Vieirinha early in the second half. The hosts responded in kind through Neven Subotic, Hummels and Immobile, the Italian showing an immaculate first touch before forcing the very best out of Diego Benaglio with a snap shot on the turn. The former Torino FC striker was making a real nuisance of himself and deservedly added his name to the scoresheet with 14 minutes still to play following a mistake by Gustavo.
BVB looked to be heading for only their fifth league win of the campaign, but Wolfsburg refused to roll over. Ricardo Rodriguez whipped in a venomous corner and, with the home defence all at sea, up popped Naldo - the tallest man on the park - with the equalising goal that ensures five-time Bundesliga champions Dortmund go into the final round of games before the winter break occupying the relegation play-off place.
Line-ups and statistics