Bayern Munich missed the chance to seal a seventh successive Bundesliga title after they were held to a controversial goalless draw at RB Leipzig.
Niko Kovac’s side thought they had made a crucial breakthrough at the Red Bull Arena early in the second half when Leon Goretzka crashed in a volley.
However, the goal was ruled out following a Video Assistant Referee review, Robert Lewandowski was deemed marginally offside in the build up.
Leon Goretzka thought he had scored but his powerful volley was ruled out for offside by VAR
The referee calls for VAR, which then rules out Leon Goretzka’s early second half goal
Serge Gnabry reacts in frustration as he sees another shot saved by the RB Leipzig goalkeeper
RB Leipzig 4-4-2: Gulacsi; Klostermann, Konate, Orban, Halstenberg; Sabitzer, Laimer (Mukiele 87), Demme (Haidara 82), Forsberg (Smith-Rowe 90); Poulsen, Werner
Subs not used: Saracchi, Bruma, Cunha, Muller
Bayern Munich 4-2-3-1: Ulreich; Alaba, Hummels, Sule, Kimmich; Thiago (Rafinha 81), Goretzka; Coman (Robben 89), Muller, Gnabry (Ribery 78); Lewandowski
Subs not used: Boateng, Davies, Sanches, Hoffmann
Booked : Goretzka, Coman
Serge Gnabry later saw his shot hit the top of the crossbar, but was subsequently flagged offside as Leipzig frustrated their visitors.
Borussia Dortmund knew they had to beat Fortuna Dusseldorf to send the title race down to the final match and Lucien Favre’s side battled to a 3-2 victory.
American Christian Pulisic, who is set to join Chelsea in the summer, put the home side in front with a close-range header in the 41st minute.
Oliver Fink equalised just two minutes into the second half when he nodded in from a corner.
Thomas Delaney restored Dortmund’s lead on 53 minutes, drilling the ball in after his first shot had been blocked.
Dusseldorf were awarded a penalty just three minutes later following a VAR review for a foul by goalkeeper Marwin Hitz on Dodi Lukebakio. However, the forward dragged his spot-kick wide.
Fans unveil a huge banner before the match between RB Leipzig and Bayern Munich
Leipzig’s Emil Forsberg attempts to take the ball past Bayern Munich midfielder Serge Gnabry
Robert Lewandowski had a chance early on but couldn’t squeeze the ball inside the post
Bayern Munich’s Thomas Muller and RB Leipzig’s Marcel Sabitzer take a tumble in the match
The away side were reduced to 10 men when midfielder Adam Bodzek was shown a red card for a high tackle on Jadon Sancho in the 82nd minute.
Mario Gotze added Dortmund’s third goal in stoppage time from just outside the box.
Dawid Kownacki set up a tense finale when he lashed home a second goal for Dusseldorf, but the home side closed out a crucial win to move two points behind Bayern.
Elswhere, Hertha Berlin fought back to win 4-3 at Augsburg with a stoppage-time penalty from Salomon Kalou.
Andre Hahn put the home side ahead after just 10 minutes. Defender Marvin Plattenhardt equalised two minutes into the second half, but Michael Gregoritsch’s penalty restored Augsburg’s lead.
It did not last long, though, as Marko Grujic made it 2-2 in the 66th minute, only for Gregoritsch to get another with 20 minutes left.
Konrad Laimer goes up for a header under pressure from Kingsley Coman and Joshua Kimmich
Bayern Munich’s head coach Niko Kovac looks on as his team try to break the deadlock
RB Leipzig goalkeeper Peter Gulacsi stops the ball with his legs after a shot from Serge Gnabry
The goals continued to fly in as former Chelsea man Kalou scored Hertha’s third equaliser after 75 minutes and then kept his cool from the spot to slot home the winner from the spot in second minute of stoppage time.
Borussia Monchengladbach swept to a 4-0 win at Nurnberg, who were relegated as a result.
Josip Drmic broke the deadlock early in the second half before Nurnberg defender Lukas Muhl scored an own goal just after the hour.
Thorgan Hazard swiftly added a third, before Denis Zakaria wrapped things up late on.
Bayer Leverkusen’s Champions League hopes took a huge blow as they drew 1-1 with Schalke.
Bayern Munich’s Kingsley Coman leaps over the challenge of RB Leipzig’s Diego Demme
Serge Gnabry volleys the ball towards the goal, forcing another good save from Gulacsi
Bayern fans thought they were in the lead after Leon Goretzka fired a volley into the net
Peter Gulacsi stops another shot from Serge Gnabry as the hosts continued to frustrate Bayern
Kai Havertz put the home side in front in the 31st minute, but Guido Burgstaller’s equaliser two minutes into the second half proved enough for a share of the points.
Hannover swept past Freiburg 3-0 but were still relegated from the Bundesliga.
Waldemar Anton broke the deadlock six minutes before half-time, with Ihlas Bebou and substitute Walace completing the rout.
Stuttgart will play in the relegation play-off after seeing off Wolfsburg 3-0 to dent the visitors’ European chances.
A deflected effort from midfielder Gonzalo Castro gave the home side the lead on the stroke of half-time. Anastasios Donis added another in the 55th minute, with Daniel Didavi scoring a late third.
Johannes Eggestein was on target as Werder Bremen won 1-0 at Hoffenheim to keep their European hopes alive.
Forward Eggestein put the visitors in front on 39 minutes, which leaves them two points off seventh place.
Bayern Munich’s Robert Lewandowski complains to the referee after being brought down
RB Leipzig’s Yussuf Poulsen reacts after skying a shot into the stands instead of the net