Champion and leader Bayern Munich saw their advantage at the top cut to eight points after they were held to a 0-0 draw at 10-man Bayer Leverkusen, having missed a barrage of chances without their injured top scorer Robert Lewandowski.
The result left Bayern on 69 points from 29 games while second-placed RB Leipzig have 61 after booking Champions League football next season for the first time in the club's history with a 4-0 home win over Freiburg.
Dortmund fans gave their players a rousing reception back at the Westfalenstadion after their tumultuous week and ended up cheering goals from Marco Reus, Sokratis Papastathopoulos and Pierre-Emerick Aubameyang.
Their opening goal came in just two minutes after a slick one-two with Aubameyang saw American teenager Christian Pulisic use his pace to catch Eintracht goalkeeper Lukas Hradecky in no man's land. The American kept his composure to find Reus in front of goal for a stunning back-heeled finish on his return from a month out with injury.
Eintracht had two good chances before Mexican Marco Fabian equalised only for a right-footed shot from Papastathopoulos to restore Borussia's lead 10 minutes before half-time.
Aubameyang grabbed his 26th Bundesliga goal of the season to seal success in the last five minutes.
The players had been greeted by a stirring reception from their supporters at a packed stadium with a visible extra police presence.
Dortmund's team bus had been heading to their stadium for the Champions League match against Monaco on Tuesday when three explosions occurred, injuring Spanish defender Marc Bartra and delaying the match by a day.
Dortmund said on Twitter on Saturday that Bartra had been released from hospital.
Bayern looked devoid of ideas against Leverkusen as they squandered one opportunity after another without Lewandowski, who also missed Wednesday's 2-1 Champions League home defeat by Real Madrid with a shoulder injury.
Their makeshift side with Thomas Mueller deployed as the lone striker failed to break the deadlock even after the home side had defender Tin Jedvaj sent off on the hour for a second bookable offence.
Third-placed Hoffenheim beat Borussia Moenchengladbach 5-3 to stay a point clear of fourth-placed Dortmund, remaining on course for a best-ever Bundesliga finish and also a maiden Champions League berth.
Their cause was helped by defeat for fifth-placed Hertha Berlin who went down 1-0 at lowly Mainz.
Hoffenheim were 2-0 up after Adam Szalai's double but Gladbach fought back to level at halftime. Two second-half goals from Kerem Demirbay kept up Hoffenheim's unbeaten home record in a goal-filled extravaganza.
Victory for struggling FC Augsburg, Mainz and VfL Wolfsburg meant bottom side Darmstadt 98 will be relegated if they do not win on Sunday at home to Schalke 04.
Wolfsburg beat second from bottom FC Ingolstadt 04 3-0 while Augsburg edged Cologne 2-1.
An own goal from Hertha defender John Brooks kept Mainz just above the relegation places in the Bundesliga as they arrested a run of five successive defeats.
(Reus 3, Sokratis 35, Aubameyang 86) Eintracht 1
(Latza 45+1) Hertha 0
(Suttner 45+1-og, Malli 68, Gomez 80) Ingolstadt 0
(Hinteregger 6, Verhaegh 23) Cologne 1
(Szalai 9, 24, Demirbay 58, 89, Uth 75) Gladbach 3
(Vestergaard 31, Stindl 35, Dahoud 78)
(Poulsen 36, Werner 42, Keita 51, Demme 90) Freiburg 0
Leverkusen 0 Bayern 0
P W D L GD Pts
29 21 6 2 56 69
29 19 4 6 25 61
29 14 12 3 25 54
29 15 8 6 29 53
29 13 4 12 2 43
29 12 5 12 -15 41