Bundesliga leaders Bayern Munich crashed to a 2-1 defeat at Eintracht Frankfurt on Saturday as the club world champions gave renewed hope to their title rivals, three days before their Champions League last-16 first leg at Lazio.
Robert Lewandowski netted his 26th league goal of the season for Bayern, but Frankfurt deserved the win thanks to first-half goals by Japan midfielder Daichi Kamada and Amin Younes.
Bayern, who drew 3-3 with struggling Arminia Bielefeld on Monday, could see their lead cut to two points by RB Leipzig when they visit Hertha Berlin on Sunday.
"We haven't learned from the Bielefeld game," Bayern captain Manuel Neuer told Sky.
"We have to be aggressive from the very beginning, we have to be wide awake. We only got going in the second half."
Fourth-placed Frankfurt are seven points behind Bayern and unbeaten in 11 Bundesliga matches.
It was Bayern's third league defeat of the season. Their last, a 3-2 reverse at Borussia Moenchengladbach in January, was followed by a shock German Cup defeat at second-tier Holstein Kiel.
It was only the sixth loss head coach Hansi Flick has suffered since taking charge in November 2019.
Frankfurt capitalised on the league leaders' jaded form since lifting the Club World Cup in Qatar just over a week ago.
Flick saw Bayern's improved second-half performance as a good "sign" and something "we're building on".
"We have had some turbulent days," he added, referring to Bayern's energy-sapping round-trip to Qatar.
Bayern were missing defender Benjamin Pavard plus forward Thomas Mueller, who were both sidelined after testing positive for Covid-19, while midfielder Corentin Tolisso is sidelined by injury.
Frankfurt's top-scorer Andre Silva dropped out before kick-off with a back injury.
Just like in Monday's draw against Bielefeld, Bayern were 2-0 down at half-time.
Kamada opened the scoring by tucking away a cross in the 12th minute, then set up Younes, who fired into the far corner past the diving Neuer on 31 minutes.
Bayern pulled a goal back just after the break when Lewandowski scored after Leroy Sane toyed with his marker before putting in a superb low cross.
Frankfurt held on for a fifth straight league win.
- Haaland's double -
Later, Erling Braut Haaland scored twice, including a stunning volley, as Borussia Dortmund routed bottom side Schalke 4-0 in the Ruhr derby.
Having also scored twice in Wednesday's 3-2 win at Sevilla in the Champions League, Haaland hit the net with a superb bicycle kick on the stroke of half-time after England winger Jadon Sancho gave Dortmund the lead in Gelsenkirchen.
Schalke's best chance was when midfielder Suat Serdar hit the post early in the second half.
Raphael Guerreiro made it 3-0 when he took a return pass from Dortmund captain Marco Reus on the hour mark before Haaland netted his second with a simple tap-in.
"We scored the goals at the right time," said Reus after his 300th Bundesliga game.
Schalke are on course for a first relegation in 30 years, but Reus says it would be a "pity" if this was the last Ruhr derby for the forseeable future.
"The Bundesliga, and us, lives for the fire (of a derby)," he added. "If I could choose, I would keep them up."
Dortmund stay sixth, while Schalke remain rooted to the foot of the table, eight points behind second-from-bottom Mainz, who pulled off a shock 2-1 win at Borussia Moenchengladbach.
Moenchengladbach, who face Manchester City in Budapest on Wednesday in the Champions League, slumped to a surprise loss.
Karim Onisiwo's opening goal was cancelled out by Lars Stindl's equaliser for Gladbach before Kevin Stoeger scored Mainz's winner four minutes from time.
It ended a week to forget for Gladbach who on Monday announced that head coach Marco Rose will leave at the end of the season to take charge of Dortmund.
"The defeat is extremely annoying, it's really hard to accept," Gladbach midfielder Jonas Hofmann told Sky after their first defeat by Mainz for five years.
Stuttgart, whose head coach Pellegrino Matarazzo on Friday extended his contract until 2024, celebrated with a 1-0 win over Cologne thanks to Sasa Kalajdzic's winning goal.