Chelsea-bound US international Christian Pulisic found the net in his final home game for Dortmund, helping them to battle back to within two points of league leaders Bayern ahead of the final round of games next weekend.
Bayern can now secure the title with a win at home to Eintracht Frankfurt next Saturday, while Dortmund must win at Borussia Moenchengladbach.
Dortmund, who looked dead and buried after slipping four points behind last week, enjoyed the rub of the green as they stumbled to victory over Duesseldorf.
Pulisic, who will join Chelsea next season, bid an emotional farewell to the Dortmund fans before the game and then opened the scoring on 41 minutes.
A howler from stand-in goalkeeper Marwin Hitz allowed Oliver Fink to equalize, but Thomas Delaney restored the lead for Dortmund.
Hitz then gave away a penalty with a foul on Dodi Lukebakio, but the Belgian dragged the ball wide from 12 yards.
Mario Goetze appeared to seal the win for Dortmund on 90 minutes, but Dawid Kownacki pulled one back for Duesseldorf minutes later to make it a nerve-jangling finish for the hosts.
In Leipzig, Leon Goretzka’s stylish scissor-kick sent Bayern into ecstasy after half-time, but the goal was ruled out by VAR.
Serge Gnabry hit the bar later in the second half, but Bayern could not force the winner.
– Nuremberg and Hanover relegated –
At the other end of the table, Nuremberg and Hanover were finally relegated as Stuttgart secured the relegation play-off place with a 3-0 win over Wolfsburg.
Hanover went down fighting as goals from Waldemar Anton, Ihlas Bebou and Walace saw them beat Freiburg 3-0.
Yet Anastasios Donis, Gonzalo Castro and Daniel Didavi were on the mark for Stuttgart to condemn Hanover and Nuremberg to the drop.
Nuremberg, meanwhile, suffered a 4-0 defeat to Borussia Moenchengladbach thanks to an own goal from Lukas Muehl and strikes from Thorgan Hazard, Denis Zakaria and former Nuremberg man Josip Drmic.
The thumping win sees Gladbach go fourth overnight, leapfrogging both Eintracht Frankfurt and Bayer Leverkusen, who were held to a 1-1 draw at home to Schalke, Guido Burgstaller cancelling out Kai Havertz’s opener.
Frankfurt have the chance to break back into the top four with a win over Mainz on Sunday.
Werder Bremen also kept their European hopes alive with a 1-0 win over Hoffenheim, and Hertha Berlin snatched a late 4-3 victory away to Augsburg.
Johannes Eggestein’s first-half goal condemned RB Leipzig-bound coach Julian Nagelsmann to defeat in his last home game in charge of Hoffenheim.
Andre Hahn and Michael Gregoritsch put Augsburg ahead three times but goals from Marvin Plattenhardt and Marko Grujic kept Hertha in the game before a late brace from Salomon Kalou secured three points.