Substitute Timo Werner netted a second-half winner as RB Leipzig came from behind to shock Bayern Munich 2-1 on Sunday as the Bundesliga leaders suffered a first defeat since November, a stretch of 19 matches in all competitions.
It was a historic night for sixth-placed Leipzig as they beat Bayern for the first time at the fifth attempt.
"Leipzig ran hard, were very aggressive and pressed us well," said Bayern head coach Jupp Heynckes.
"We didn't play like we have done in the last few weeks and I have to say it clearly: Leipzig deserved to win."
Back-up striker Sandro Wagner gave Bayern an early lead at Leipzig's Red Bull Arena, but the hosts roared back in emphatic style through Liverpool-bound Naby Keita and Werner.
Bayern maintain a massive 17-point lead at the top of the table with a mouth-watering clash at home to third-placed Borussia Dortmund to follow in a fortnight.
Heynckes made six changes from the team which won 3-1 at Besiktas in the Champions League on Wednesday.
Top-scorer Robert Lewandowski was rested from the starting line-up, but his stand-in Wagner needed just 12 minutes to put Bayern ahead.
James Rodriguez fired in a cross and Wagner headed home with Juan Bernat and Arturo Vidal queueing up behind him to finish the chance.
However, Bayern were punished for dropping their tempo.
Keita equalised on 37 minutes, firing home despite the presence of a number of defenders after Werner, an early replacement after only 10 minutes when injury struck Marcel Sabitzer, had a shot blocked.
The pair combined again for the winning goal in the 56th minute.
When Keita's pass put Werner clear, the Germany striker sprinted away from Bayern centre-back Niklas Suele before hitting his shot just out of reach of goalkeeper Sven Ulreich.
It was relief for Werner who scored his first Bundesliga goal in eight games after a barren spell of 543 minutes.
Earlier, a stunning Michy Batshuayi goal -- his sixth in seven league games -- gave third-placed Dortmund a 1-0 win over Hanover.
Batshuayi, on loan from Chelsea until May, grabbed the decisive goal with a wonderful piece of individual skill midway through the first half.
Having hit the post after just 35 seconds, Batshuayi had his back to goal when he met Andre Schuerrle's corner at the near post with a backheeled volley that flew into the far corner.
"I saw the path to the goal wasn't clear, but there was just a small gap and luckily it came off," Batshuayi told Eurosport.
Hanover were denied an 81st-minute equaliser when Julian Korb poked the ball over the line, but the goal was ruled out for offside.
Dortmund winger Maximilian Philipp hit the post just before the final whistle as the hosts tried to stretch their lead.
The victory was a solid response from Dortmund after Thursday's disappointing Europa League last-16 exit at the hands of Austrian side Salzburg.
It leaves Dortmund head coach Peter Stoeger unbeaten after 12 league games in charge.
Cologne dragged themselves off the bottom of the table for the first time since August with a shock 2-0 win at home over 10-man Bayer Leverkusen.
Japan striker Yuya Osako gave Cologne the lead after only nine minutes when his shot bobbled under goalkeeper Bernd Leno.
Then an intervention by the video assistant referee (VAR) saw Leverkusen striker Lucas Alario sent off on 33 minutes.
In an off-the-ball incident, the Argentinian lashed out with his elbow at his marker Dominic Maroh and after a VAR review, Alario was shown a straight red.
Leverkusen, who dropped to fifth after the defeat, pushed for an equaliser, but the game was put beyond their reach by another mistake.
An attempted header back to Leno by Charles Aranguiz was intercepted by Cologne's Simon Zoller, who lobbed the ball into the empty net with 21 minutes left.
Cologne are now just five points from safety, leaving Hamburg, who lost 2-1 at home to Hertha Berlin on Saturday, bottom of the table.
1 (Batshuayi 24) Hanover
2 (Osako 9, Zoller 69) Bayer Leverkusen
2 (Keita 37, Werner 56) Bayern Munich
1 (Wagner 12)
table after Sunday's evening's match (played, won, drawn, lost, goals for, goals against, points
27 21 3 3 66 20 66
27 14 7 6 41 30 49
27 13 9 5 54 33 48
27 13 6 8 38 30 45
27 12 8 7 47 35 44
27 12 7 8 40 35 43
27 10 9 8 46 41 39
27 11 4 12 25 30 37
27 10 6 11 36 42 36
27 9 8 10 37 36 35
27 8 11 8 32 32 35
27 8 9 10 30 32 33
27 8 8 11 33 39 32
27 6 12 9 26 44 30
27 4 13 10 28 37 25
27 6 7 14 29 46 25
27 5 5 17 27 49 20
27 4 6 17 19 43 18