Borussia Dortmund substitute Erling Haaland headed a stoppage-time winner to snatch a 1-0 victory at Fortuna Dusseldorf on Saturday but their title hopes grew slimmer as Bayern Munich kept up their winning run.
The Norwegian teenager, who was brought in on the hour, scored with the last play of the game to lift second-placed Dortmund to 66 points from 31 games.
Leaders Bayern Munich are on 73 after beating Borussia Monchengladbach 2-1, thanks to Leon Goretzka's 86th-minute winner, and need only one more win from their last three games to secure an eighth straight title.
Dortmund never hit top form and survived several scares before Raphael Guerreiro volleyed home just past the hour. The effort, however, was cancelled out by a VAR review for handball after the ball was deflected onto Guerreiro's shoulder.
Despite the return of defender Mats Hummels the Dortmund backline was far from solid.
Fortuna, in the relegation playoff spot, almost took the lead after twice hitting the post through substitute Steven Skrzybski - first in the 82nd minute with a low shot and eight minutes later again after he broke clear.
But Haaland, back from a knee injury, bagged his 11th goal in 12 league games and made sure of a last-gasp win when he rose high to connect with Manuel Akanji’s cross.
The win maintained Dortmund's four-point gap over third-placed RB Leipzig, who won 2-0 at Hoffenheim on Friday.
Werder Bremen enjoyed a big win in the battle to avoid the drop, beating bottom club Paderborn 5-1 away with two goals from Davy Klaassen to join Fortuna on 28 points. Paderborn have 20.
Promoted Union Berlin's 2-1 win at Cologne lifted them to 13th on 35 with another Bundesliga season all but assured.