Jamal Musiala’s 89th-minute goal saw Bayern Munich win the Bundesliga title for an 11th year in a row as they snatched it away from rivals Borussia Dortmund on a dramatic final day.
Dortmund would have claimed their first title since the 2011-12 season if they had beaten Mainz at home but drew 2-2, only levelling in the sixth minute of stoppage time, while Musiala’s late strike gave Bayern a 2-1 win at Cologne to take the honours on goal difference.
Dortmund, for whom England midfielder Jude Bellingham was an unused substitute after injury, quickly got the sense this would not be their day.
They fell behind to Andreas Hanche-Olsen’s 15th-minute header, then saw Sebastian Haller’s penalty saved moments later before Karim Onisiwo doubled Mainz’s lead in the 24th minute.
Raphael Guerreiro offered the hosts hope when he hammered in a cross from Gio Reyna in the 69th minute.
And soon after Dortmund were back at the top of the standings as Dejan Ljubicic’s 81st-minute penalty cancelled out Kingsley Coman’s early curling strike to make it 1-1 in Cologne, Dortmund ahead by a point at that stage.
But there was one final twist as Serge Gnabry, guilty of conceding that late penalty, teed up Musiala to fire in the winner.
Niklas Sule scored deep into time added on for Dortmund but it would make no difference as Thomas Tuchel’s Bayern took the title.
Read MoreBorussia Dortmund vs Mainz LIVE: Latest Bundesliga updates
Bundesliga title set for final-day drama with Dortmund one win away
Rumours: Real Madrid want Liverpool’s Robertson and trio chase Kudus