After Schalke and Dortmund both won, Bayern Munich couldn't do the same in a cold Leipzig. A 70-minute cameo from a sub who then came off made the difference. Bayern still lead the Bundesliga by 17 points.
RB Leipzig 2-1 Bayern Munich
(Keita 37', Werner 57' - Wagner 12')
Leipzig got their first ever win against Bayern Munich, a victory that makes a huge difference to everyone other than Bayern.
An early Sandro Wagner header from a James Rodriguez cross was the start Bayern deserved, but after that the hosts were largely in control. Eventually, Naby Keita made that dominance count when he put in a rebound after finally finding a way past Sven Ulreich and Bayern's defense.
In the second half, Leipzig's persistence continued. Timo Werner — who came off the bench after just eight minutes due to an injury to Marcel Sabitzer — drilled into the far corner to put Leipzig ahead after the 22-year-old timed his run perfectly. Werner missed a chance to make it 3-1 and Bayern's frustration began to show. A late penalty appeal for handball was checked by VAR, but not even technology had anything to give Bayern on the day.
Bayern head coach Jupp Heynckes, who made six changes to his starting line-up, admitted afterwards Leipzig deserved to win. The result still leaves Bayern 17 points clear at the top, but perhaps more importantly it keeps Leipzig in contention for a European spot.
As it happened:
RESULT: Leipzig 2-1 Bayern (Keita 37', Werner 57' - Wagner 12')
Bayern run out of time and have been found out by Leipzig who deserve their first ever win against the defending champions. It won't matter much to Bayern, who will go on to win the league anyway, but for the rest of the chasing pack this is a big result. Leipzig are now within one point of Leverkusen and two of Frankfurt. It tightens the table from 2nd to 6th.
90+1' - Four minutes of added time to come. Wagner forces a corner. Bayern suddenly look dangerous...
87' - Worth mentioning that in all that excitement earlier, Timo Werner came back off. A 70-minute cameo for the striker, with perhaps the winning goal to boot? Would take something special from here for Bayern to avoid defeat. A VAR check confirms Bayern won't get a penalty for a handball on Lewandowski's shot. Big call.
81' - Hummels heads over from a free kick. Bayern want an equalizer but look well short of finding one. Not long left...
75' - Robert Lewandowski is on for Bayern. They're keen to prevent Leipzig from getting their first ever points against them.
70' - Kimmich hangs up a cross, but Arturo Vidal heads wide. How rare is it to see Bayern wasting chances, particularly in a game they're losing? Well, it's happening...
63' - Handbags! Franck Ribery and Naby Keita square up. Both are booked for something - Keita looks to have been holding his eye. Who knows? In any case, the game goes on and things are more tense after that.
62' - What a game! Müller wastes a counterattack, then Werner hits an effort into the side-netting when a pass might have made it 3-1 Leipzig. And then Hummels forces a great save from Gulacsi! A really good contest.
57' - GOAL! 2-1 Leipzig (Werner) The perfect example of how to bend your run as a striker. Süle heads the ball straight to Kampl on the halfway line. Kampl darts forward, plays in Keita who slips a perfect through ball for Werner. The striker has run back onside to stay in line with Bayern's defensive line and then takes the ball in his stride before finishing into the far corner. Fantastic goal.
54' - Bruma gets some space in the box, but he curls it wide. A half chance that.
50' - The half starts as furiously as the last one ended. Bayern get in and around the area but the final ball is missing, while Leipzig can't decide when to shoot.
46' - Second half has started in Leipzig.
HALFTIME - Leipzig 1-1 Bayern (Keita 37' - Wagner 12')
Bayern started well but Leipzig ended the half so well they could have been ahead at the break. Bayern have been a bit slow but with six changes to the team and an 18-point lead, it's understandable. An exciting 45 minutes awaits.
44' - A free kick flies over, a counterattack breaks down. Leipzig could be ahead here. They are pinning Bayern in.
41' - Sebastian Rudy gets booked. Bayern are a little rattled. James whips in a deep free kick but Gulacsi easily claims.
37' - GOAL! 1-1 Leipzig (Keita) Leipzig deserve that. Werner gets into the box and shoots, but Ulreich saves. The rebound falls to Naby Keita. His first effort is blocked by a sliding Niklas Süle, but Keita puts the second attempt away. Game on!
32' - Werner's cross is deep but finds a teammate but then it's scrappy. A moment later, a low cross from Konrad Laimer is nearly converted by Poulsen but he can't connect. Kevin Kampl is booked for a tackle in the aftermath. Fast and furious this one.
27' - Hummels shanks a clearance from a corner which allows Werner in. His shot squeezes through but Ulreich does enough to slow it down and Süle hacks it off the line at the last moment. Close for Leipzig!
23' - News about the Sabitzer injury from Sky is that the winger has turned his ankle. No diagnosis yet. Wagner continues to buzz around the pitch, showing exactly why he was the perfect solution for the back-up striker at Bayern.
21' - Dayot Upamecano battles but holds off Thomas Müller, but the ball is quickly lost. Leipzig haven't really settled so far - the crowd has though. Not much noise from them. The visiting Bayern fans on the other hand are doing a decent job.
15' - CHANCE! Yussuf Poulsen gets in behind Mats Hummels after a long ball, but Sven Ulreich makes a top save and keeps out the rebound too. What a season he has had. Really impressed since stepping in for Manuel Neuer.
12' - GOAL! 1-0 Bayern (Wagner) Leipzig are caught flat-footed at the back, James delivers a perfect ball into the box and Sandro Wagner gets in between a scattered defense to head smartly home. A goal full of quality.
8' - Even start. Joshua Kimmich with a misplaced pass nearly lets Leipzig in. Marcel Sabitzer has picked up a knock and can't continue so Timo Werner's time on the bench is limited to just eight minutes. Not much of a rest.
1' - We are off in Leipzig. The hosts get us started. I remember when this game was hyped as the title-decider. Well, not today. Bayern can go 20 points clear with victory tonight. Leipzig can stay in touch with the top four with three points.
-- Surprise sub? One for the notebook, 19-year-old attacking midfielder Meritan Shabani from Kosovo is on the Bayern bench today. Shabani has scored seven and assisted five for Bayern's U19s this season. Might get a run out today. The luxury of being on the verge of the title, eh?
-- Teams news! After their stroll in the park in the Champions League in Istanbul in mid-week, Jupp Heynckes makes six changes. Jerome Boateng, Javi Martinez, Rafinha, Franck Ribery and Robert Lewandowski drop to the bench, while Thiago Alcantara has a foot injury. Leipzig have an attacking team, but perhaps the biggest surprise is the omission of Timo Werner (on the bench). Eye on the Europa League there, I think.
Bayern Munich XI: Ulreich - Alaba, Hummels, Süle, Kimmich - Rudy, Vidal - Bernat, James, Müller - Wagner
Leipzig XI: Gulacsi - Ilsanker, Upamecano, Konate, Laimer - Keita, Demme - Bruma, Sabitzer, Poulsen, Kampl
-- Guten Abend! Welcome to this evening's DW coverage of RasenBallsport Leipzig vs. Bayern Munich. Had results elsewhere gone their way, Bayern could have had the chance to wrap up their sixth consecutive Bundesliga title here in Leipzig tonight - but victories for Schalke & Dortmund mean the party has been postponed.