Bayern, which would have secured a seventh straight title with a win, allowed Dortmund to close the gap to two points before the final round next weekend.
Bayern boasts a considerably better goal difference by 17 goals, meaning a draw against Eintracht Frankfurt in Munich next Saturday will be enough to seal the title. Dortmund must win at Borussia MÃnchengladbach and hope for a Frankfurt victory to take the title.
"It was never so close," Bayern forward Thomas Muller said of the title race. "We really want to get the thing with our fans behind us."
The league race is going to the final day for the first time since Wolfsburg pipped Bayern to the title in 2009.
With Germany coach Joachim Low watching from the stands, Bayern missed a host of chances to score the goal it needed.
Leon Goretzka had the visiting fans celebrating in the 50th minute when he volleyed in an attempted clearance, but the goal was ruled out through VAR as Robert Lewandowski was marginally offside in the buildup.
Dortmund almost blew another two-goal lead after letting 10-man Dusseldorf come perilously close to an equalizer in injury time.
Christian Pulisic, playing his last home game for Dortmund, opened the scoring four minutes before the break with his first headed goal in the Bundesliga. It could be his last. The American midfielder is leaving for Chelsea in a 64 million euro (now $71 million) deal agreed in January.
Dortmund ‘keeper Marwin Hitz – who was filling in for the injured Roman Burki – let Dusseldorf captain Oliver Fink’s harmless-looking header slip through his fingers in the 47th.
Then came the news that Goretzka had scored for Bayern, but it was ruled out and Thomas Delaney restored Dortmund’s lead over Dusseldorf in the 53rd.
Dodi Lukebakio missed a penalty for Dusseldorf, before Mario GÃtze thought he’d sealed it in injury time. Dawid Kownacki pulled one back, however, to set up another nervy finale.
Stuttgart defeated Wolfsburg 3-0 to clinch the relegation playoff place and condemn the bottom two teams, Hannover and Nuremberg, to the second division.
Hannover was relegated on the day it produced its best performance of the season – beating Freiburg 3-0.
Gladbach defeated Nuremberg 4-0 away to move to fourth, ahead of Bayer Leverkusen on goal difference, for the last Champions League qualification place. Leverkusen was held at home by Schalke to 1-1.
Also, Werder Bremen won at Hoffenheim 1-0, and Hertha Berlin won at Augsburg 4-3 thanks to Salomon Kalou’s goal in injury time.
Frankfurt can reclaim fourth place on Sunday with a win at home against Mainz.