Pierre-Emerick Aubameyang's 12th goal of the season was enough for the hosts to see off Bayern Munich and grab all three points in the crunch clash, putting their name back in the hat for the Bundesliga title.
Fast start for the hosts
The hosts Dortmund got off to a flyer as just ten minutes had passed before they took the lead against their rivals. A wonderfully worked goal was culminated by Mario Götze's low cross was diverted home by Pierre-Emerick Aubameyang for the striker's 12th goal of the season.
Dortmund almost found themselves with a 2-0 lead after 20 minutes as Aubameyang delivered a great cross but Andre Schürrle's header was straight at Manuel Neuer in the Bayern Munich goal.
As many expected, the meeting between these two fierce rivals was far from friendly, with plenty of hard challenges flying in during the opening half an hour. Since conceding early on, it were the visitors who dominated proceedings and had the better of the chances with Mats Hummels notably going close.
Bayern did have a couple of chances to level before the half time whistle as Dortmund attempted to clear a cross from the right but it bounced off Joshua Kimmich and rolled just wide of the near post. Seconds later, excellent work from Kimmich allowed his side one more cross into the area but Thomas Müller's head was saved comfortably by Roman Bürki.
Dortmund hold on for crucial win
Dortmund were again on the front foot to start the second half with Aubameyang finding himself in a great position in the box but his effort was saved expertly by Neuer just 30 seconds after the restart.
Bayern Munich created a golden chance of their own, only to be thwarted by the diving Bürki. Phillip Lahm's cross from the right was on track to meet Robert Lewandowski's head and level the tie but Roman Bürki's diving punch denied the striker of another goal against his former club.
The visitors thought they'd equalised before the hour mark after Müller's cross was met by Franck Ribery's wonderful backheel but the Frenchman was ruled offside. Bayern's best chance of the game came with half an hour to go with Xabi Alonso's curling strike smashing off the crossbar and rooting Bürki to the spot.
Dortmund had yet another opportunity to put the game to bed with 20 minutes left as Aubameyang raced through but fired his shot straight at Neuer, not for the first time.
Tempers flared late on as Adrian Ramos and Ribery had to be separated, with both receiving a yellow card for their actions. Bayern were inches away from snatching a point in added time but Lewandowski's header rolled painfully wide.
Dortmund with stood endless pressure in the second half to hold on for a crucial home win and putting themselves back into the title race.