Leaders Bayern Munich suffered only their fourth Bundesliga defeat of the season at Mainz.
Three goals in 14 minutes from Ludovic Ajorque, Leandro Barreiro and Aaron Caricol saw the hosts stun Thomas Tuchel’s side.
Bayern took the lead in the first half through Sadio Mane’s header after he got on the end of Joao Cancelo’s cross.
Borussia Dortmund have the chance to go top of the league when they face Frankfurt later on Saturday.
Ajorque equalised for Mainz after he headed home from close range when Bayern goalkeeper Yann Sommer couldn’t keep hold of Lee Jae-sung’s effort.
Barreiro slotted past Sommer after getting on the end of Karim Onisiwo’s pass before Caricol sealed the victory as he finished into the bottom corner from Andreas Hanche-Olsen’s lay-off.
Mane, who returned to the starting line-up following suspension, also had an effort ruled out for offside following a VAR check.