The defending champions who were supposed to seal their Bundesliga title this weekend were outsmarted by their lively hosts, who extended their unbeaten run in the league to seven games.
Despite seeing less than 30% of the ball, Bo Svensson’s side held on to emerge victorious from the tie, thanks to two first-half goals from Jonathan Burkardt and Robin Quaison.
Hansi Flick welcomed back Robert Lewandowski to the starting line-up after a lengthy absence due to a knee injury, but the Polish striker could not inspire his struggling side to a win as they fell to their first league loss in nine games.
Mainz began the game aggressively and were ahead three minutes into the game when Jonathan Burkardt capitalised on poor defending by Bayern Munich to put his side ahead.
Shortly after their opener, the hosts had an opportunity to double their lead over a stunned Bayern side, but they were denied twice by the post.
However, to their credit, Mainz continued to press their visitors high up in the pitch and were rewarded with a goal in the 37th minute through Robin Quaison.
The Swedish striker doubled his side lead with a beautiful header after a well-taken Phillipp Mwene free-kick had found him in the box.
Hansi Flick reacted to falling two behind by replacing the anonymous Lorey Sane with Maxim Choupo-Moting early in the second half. But the striker’s introduction could do little to change Bayern Munich’s fortune.
However, the visitors got a late consolation goal in the 95th minute through the returning Lewandowski, who capitalised on a defensive error to score his 36th league goal for the season.
The result took Mainz to 12th on the table, five points clear of the relegation zone, while Bayern will continue to wait for the title coronation. But the Bavarians could still seal their league title with a win in their next match against Borussia Monchengladbach if RB Leipzig fails to win against Stuttgart in their fixture tomorrow.
Robin Zentner, Alexander Hack, Moussa Niakhate, Jerry St. Juste, Leandro Barreiro (Dominik Kohr), Danny Latza, Robin Quaison (Jean-Paul Boëtius), Philip Mwene, Danny da Costa (Daniel Brosinski), Karim Onisiwo (Robert Glatzel), Jonathan Burkhardt (Levin Öztunali).
Adam Szalai, Stefan Bell, Kevin Stöger, Finn Dahmen.
Manuel Neuer, David Alaba (Serge Gnabry), Jérôme Boateng, Alphonso Davies, Benjamin Pavard, Thomas Müller, Leon Goretzka (Nianzou Kouassi), Joshua Kimmich, Robert Lewandowski, Kingsley Coman (Jamal Musiala), Leroy Sané (Eric Maxim Choupo-Moting).
Javi Martínez, Bouna Sarr, Alexander Nübel, Marc Roca, Tiago Dantas.