The Bundesliga title race will go down to the final day after favorites Bayern were held to a goalless draw in Leipzig. Borussia Dortmund kept their hopes alive with a typically dramatic win over Düsseldorf.
RB Leipzig 0-0 Bayern Munich
Borussia Dortmund 3 - 2 Fortuna Düsseldorf
(Pulisic 41', Delaney 53', Götze 90+2' - Fink 48', Kownacki 90+5, Bodzek s/o 81')
Bayern Munich missed the chance to wrap up a seventh straight Bundesliga title as they were held by an Ibrahima Konate-inspired RB Leipzig while rivals Dortmund clung on to take all three points at home to midtable Fortuna Düsseldorf.
Leon Goretzka thought he had won the league for Bayern with a second-half volley, but the video assistant referee ruled out the strike for offside in the buildup, as the title race remained undecided.
Minutes earlier, on the other side of the country, BVB reserve keeper Marwin Hitz had made a huge blunder as his side conceded an equalizer to Oliver Fink after Christian Pulisic had opened the scoring in his last Dortmund home game with a header.
As Bayern rued their luck, Thomas Delaney restored Dortmund's lead on 53 minutes with a powerful shot after his initial effort was blocked, before Hitz nearly cost his side again, conceding a needless penalty just before the hour mark. But Dodi Lukebakio screwed the spotkick wide.
Meanwhile, the offensive talent on show in Leipzig was having little impact on the game, though the best chances fell to Bayern. Neither Serge Gnabry nor Robert Lewandowski could take them.
Marcel Halstenberg had two half-chances for RB as the second half drew on but didn’t trouble Sven Ulreich, while Serge Gnabry hit the bar for Bayern – although he was also in an offside position.
But the Bayern pressure was growing. Franck Ribery came on and flicked Thomas Müller’s ball across the six-yard-box towards goal but Gulacsi saved from close range again, before Lewandowski put a free-kick inches wide as RB held on.
Despite a brilliant Mario Götze effort in injury time that put Dortmund 3-1 up, and the late dismissal of Adam Bodzek, BVB nearly threw it all away. Dawid Kownacki was allowed acres of space in the box to pull one back before a series of setpieces caused panic in the Dortmund box.
But they managed to stay alive for another week, and so did the most intriguing Bundesliga title race for many years. The winner will be decided next week when Dortmund travel to Borussia Mönchengladbach needing to win, while hoping that Eintracht Frankfurt can win in Munich.
As it happened
FULL TIMES: Both games now over and the title race will go to the last day! Bayern struggled to break down Leipzig while Dortmund made life ridiculously difficult for themselves against ten man Düsseldorf - they came very close to drawing after being 3-1 up in injury time. Our match reports will be here soon enough.
90+8 - Again Dortmund leavea man free but Karaman at the back post can't keep his volley down. Dortmund nearly threw it away again!
90+7 - Unbelievable. Dortmund allow ten man Düsseldorf to get one back. A simple finish from an unmarked position. They then allow Düsseldorf two more attacks and they have a freekick. The keeper is up.
90+5 GOAL! Borussia Dortmund 3 - 2 Fortuna Düsseldorf (Kownacki)
90+5 - Last chance for Bayern, surely. Müller sees Lewandowski's run but fades his ball beyond it.
90+3 - Delightful strike from Götze and that surely seals the three points for Dortmund. The German controlled a ball dropping out of the sky stone dead, before shifting it with his second touch and lashing in with his third. Sumptuous.
90+2 GOAL! Borussia Dortmund 3 - 1 Fortuna Düsseldorf (Götze)
90+1 - Konate is caught in possession by Müller and Lewandowski thinks he's in. But the referee rightly deems Müller's challenge to be a foul. Schmelzer replaces Pulisic at Dortmund.
90' - Five minutes of added time in both games.
89' - Close! It is Lewandowski who goes for power on Gulacsi's side rather than going over the wall. The keeper was beaten but it whistled wide. Bayern have thrown on Robben for Coman and Leipzig have bought on Smith-Rowe.
88' - Bayern have a freekick just outside the box for a foul on Müller. Great position, Lewandowski probably favorite you'd think.
87' - Laimer limps off for Leipzig and is replaced by Mukiele for the last few minutes. Can Leipzig keep the title race alive? Can Dortmund?
85' - Sancho is back on, but he doesn't look comfortable.
83' - An absolute shocker of a tackle from Bodzek on Sancho. The Englishman was flying away and Bodzek flew in and caught him on the knee with the bal lon the ground. Dreadful. Moments earlier, Fortuna wanted a penalty after a header struck Götze on the arm. File that under: seen them given.
81' - Red card for Düsseldorf!
80' - Sancho flies down Dortmund's left but can't find a way through. Dortmund are so fragile right now that you feel they need the third. Rafinha replaces Thiago, who was down injured a moment ago, for Bayern. Kimmich will move to midfield.
78' - Ribery is on for Coman in Leipzig. Surprised it wasn't Coman, who has looked less threatening than his German teammate.
77' - Over at Dortmund, we see Marco Reus watching something on his phone, presumably the Bayern game. Dortmund on top but by no means secure.
76' - Halstenberg bursts through on the left. It opens up for the shot and he takes it on despite Werner screaming for it at the back post. The strike is decent but he pulls it and it whistles wides. Moments later, Poulsen lets a curler go, but it flies over the bar. Ribery is ready to come on.
73' - Klostermann finds some space in the box and rolls one back to Werner. But the Leipzig striker's connection is poor and the danger is averted. The tension is rising by the minute.
70' - Laimer goes down under challenge from Süle in the box. The home side want a VAR review but the Bayern defender got a toe to the ball.
69' - Is it Robbery time for Bayern soon?
66' - Woodwork! Müller slips in Gnabry, who gets past Klostermann on the left but clips the top of the bar. Turns out the flag was up anyway.
65' - A brief look elsewhere now. And despite leading Hannover look like they're going down today, with Stuttgart leading Wolfsburg 2-0. Nuremberg will join them in the 2.Bundesliga as it stands, they're 3-0 down to Gladbach. And Schalke are level with Leverkusen, meaning Gladbach currently sit fourth. Still plenty of time though.
63' - Not quite happening for either side at the Red Bull Arena but Bayern still just need one goal to wrap up the title.
61' - Sancho, a surprise omission from the starting lineup, replaces Bruun Larsen for BVB.
59' - Düsseldorf miss penalty! Lukebakio stutters in his run up, sends Hitz the wrong way and dribbles it wide. This is incredible stuff.
58' - Penalty to Düsseldorf! The VAR is looking at a clash between Hitz and Lukebakio in the Dortmund box. The replays do show the Dortmund keeper was beaten to the ball and it's a spotkick. HItz looks to be injured too, he's holding his face.
57' - Bit of a live bloggers nightmare of a few minutes there but what drama. And there could be more....
53' - Dortmund lead again. From six points behind to two points back in the blink of an eye. the build up was nice from Dortmund with Götze heavily involved, before Delaney's initial shot was blocked. But the rebound fell kindly and the Dane, who set up the first, scores the second. Game back on.
53' - It looks like the VAR has ruled that Lewandowski was inches offside in the build up. But hold on, another twist!
53' - GOAL DISALLOWED! No, it's ruled out. There didn't look a lot wrong with it but the VAR has ruled it out.
50' - It's all turned around now. Leipzig miss a few opportunities to clear their lines and eventually Konate's header loops up for Goretzka to volley home. Advantage Bayern.
50' GOAL! Bayern Munich 1 - 0 RB Leipzig (Goretzka)
47' - Another week another dreadful goalkeeping error for Dortmund. Götze gave the ball away cheaply, Fortuna worked it to the left and Fink got on the end of Suttner's cross with his head. But there was little on it and Hitz, in for the injured Bürki, allowed it to scramble through his legs.
47' GOAL! Borussia Dortmund 1 - 1 Fortuna Düsseldorf (Fink 48')
47' - The camera pans to Franck Ribery as a Leipzig counter breaks down. The Frenchman is stood up, looking eager to get on that pitch.
46' - We're off again. A huge 45 minutes in store.
HALF TIME: It's still alive. That Pulisic goal late in the half means Dortmund are doing their bit at home, though it's not always been pretty. Over in Leipzig, it's been fairly even, though Bayern finished the half much the stronger and created the better of the chances. Well poised.
45+1 - Lovely piece of skill from Coman to fleece Halstenebrg but Konate, who has had an excellent half, anticipates it again.
44' - Bayern attempt to respond to that Dortmund goal through Müller, who picks up a poor Orban clearance and drives in to the box. But the Leipzig captain does well to recover and make the tackle.
41' - Delaney ghosts in at the back post to head a deep cross back across goal, Pulisic anticipates the knockdown and bundles in a diving header in his last home game at the Westfalenstadion.
41' - GOAL! Borussia Dortmund 1 - 0 Fortuna Düsseldorf (Pulisic)
40' - Now Leipzig counter. Werner is screaming for it early but doesn't get it for a while. When he does, the ball is behind him and he can't get much power on his shot. Ulreich saves easily.
39' - Chance! Kimmich gets an arm to the face and goes down, perhaps a little theatrically. Hasan Salihamidzic was up berating the fourth official on that one. The freekick is flicked on by Lewandowski and lands to Gnabry on the volley at the back post. He catches it sweetly but it's straight at Gulacsi, who beats it away.
35' - Bayern seem to have weathered the storm and are starting to get on top. But they could still do with mooving the ball a bit quicker and getting Thiago on it a little more.
31' - Kai Havertz has put Leverkusen 1-0 up over Schalke, that puts them up in to fourth for now, with Frankfurt playing tomorrow.
31' - Not a huge deal happening for Borussia Dortmund at this point in time, with their visitors enjoying more of the ball.
28' - Chance! Brilliant work from Lewandowski down the right as he wriggles through a few challenges before findin Gnabry. The German winger is close to goal but Konate closes him down and he can only hit Gulacsi's legs. Bayern's best moment so far.
24' - Delaney almost gets round the back for Dortmund but his touch lets him down. Tense stuff at both grounds so far.
22' - Another big challenge from Süle denies Sabitzer. He's been Bayern's standout player so far, which tells you something. That Düsseldorf goal was ruled out in the end.
20' - A little break in play as Laimer is treated for a bloody elbow. Over in Dortmund, Düsseldorf have the ball in the BVB net but it's been ruled out for offside. But there's a VAR review...
17' - Klostermann throws himself to the the ground to pull a ball packk to Poulsen but Hummels throws himself in front of the Dane's shot. But it turns out Klostermann hadn't quite kept it in anyway. The home side getting on top here.
16' - Forsberg, in the inside right channel, threads the needle to find Werner pulling away on the left. The striker cuts inside, allowing Süle to get the block in. Telegraphed that one a bit.
14' - A lively start this, the hosts are popping the ball about nicely at times and Bayern have also offered glimpses of threat. No goals in Dortmund so far either.
11' - Good football from Leipzig. Werner slips in Halstenberg, who is bombing down the left flank, but Sabitzer is squeezed out as he tries a first time shot.
9' - Chance! Thiago dinks a lovely ball through as Leipzig push up on their eighteen yard line. Lewandowski thinks he's beaten the offisde trap but drags it wide. Replays shown he was off by a foot or so anyway. Still should've hit the target at least.
5' - Gnabry drives through the middle and opts to have a crack from 25 yards rather than feed Coman, who was in space on his right. But it's a dribbler that never threatened Gulacsi.
4'- Bayern win the game's first corner of the match but Gulacsi punches Thiago's ball clear.
2' - Leipzig almost got Werner through in the first thirty seconds but Ulreich was off his line quickly to clear the danger. Sounds decent at the Red Bull Arena, which isn't always the case.
1' - And we're off! Bayern, in grey, get the game going.
15:24 - The players will be out soon in Leipzig, with these two the form sides in the league. Leipzig have won 10 and drawn four of their last 14 and have the best defensive record in the Bundesliga while Bayern have scored the most goals and are unbeaten in 12 now.
15:16 - We have eight 15:30 games today, with Eintracht Frankfurt vs. Mainz the only exception, thanks to Frankfurt's Europa League exertions. Bayer Leverkusen could jump above the Eagles in to fourth with a win over Schalke, while Gladbach, Wolfsburg and Hoffenheim are hoping to keep their slim Champions League hopes alive against Nuremberg (a), Stuttgart (a) and Werder Bremen (h), respectively.
At the bottom, Hannover will be relegated if Sttutgart get a point, while Nuremberg are also hanging by a thread.
15: 05 - The Bayern game is, of course, also a dress rehearsal for the German Cup final on May 25. And with Julian Nagelsmann incoming to RB Leipzig ahead of next season, there are those that believe the Red Bulls could mount something of a challenge next year. Can they lay down a marker today?
14:56 - The teams are in and both Arjen Robben and Franck Ribery start on the bench for Bayern in what will be their last Bundesliga matchday squad away from the Allianz Arena. Manuel Neuer still isn’t fit, so Sven Ulreich continues in goal and Javi Martinez also misses out. Timo Werner, who has long been linked with Bayern, starts up front for the home side in that one.
BVB, who host Fortuna Düsseldorf, are also without their first choice keeper Roman Bürki (muscular injury), Marwin Hitz deputizes. Paco Alcacer starts up front in a side missing natural defenders, with Abdou Diallo also out and Christian Pulisic starts in his last Dortmund home game before he joins Chelsea.
14:45 - Is this the day? There's been a growing sense of familiar inevitability about Bayern winning this season's Bundesliga for a few weeks now. But they slipped up in Nuremberg after Dortmund's derby defeat a couple of weeks ago and this is a whole different level of challenge. RB Leipzig still have something to play for despite having secured third and Champions League football - they could still pip BVB to second.
The maths: If Bayern win, they're champions. If they draw or lose, and Dortmund win, it's still alive. If Bayern lose, a Dortmund draw would mean they can mathematically still win the title but would have to make up a huge swing in goal difference and a loss for BVB would mean Bayern wrap it up.
1. Bayern Munich - Played: 32 Points: 74 - GD: 52
2. Borussia Dortmund - Played: 32 Points: 70 - GD: 34