After Borussia Dortmund could only draw on the final day of the season, Bayern Munich won the Bundesliga with a 2-1 win in Cologne thanks to a goal from Jamal Musiala in the 89th minute.
Dortmund, who had a two-point advantage heading into the last round, was held to a 2-2 draw at home by Mainz on Saturday, which gave Bayern the victory thanks to a superior goal differential.
To guarantee the end of Bayern's 10-year run as champion, Dortmund needed to win.
Only three times, Werder Bremen in 1986 and Bayer Leverkusen in 2000, did Bayern manage to overtake them on the last day of the campaign.
Dortmund supporters were jubilant when Dejan Ljubicic of Cologne converted a penalty against Bayern in the 81st minute, but Musiala, who had been brought in as a substitute four minutes earlier, scored four minutes later to give Bayern the championship.
Sébastien Haller's first-half penalty attempt was saved after Andreas Hanche-Olsen startled the home crowd by heading in Mainz's first goal in the 15th minute after Dortmund had taken the early lead.
After scoring Mainz's second goal in the 24th minute with another header, the visitors seemed capable of adding to their lead against the haphazard Dortmund defence. For Mainz, nothing but dignity was on the line.
In the 69th minute, Dortmund's Raphael Guerreiro pulled one back, but by the time Niklas Süle equalised in the sixth minute of stoppage time, it was too late for the “black and yellows.”
With a late victory against Werder Bremen, Rani Khedira propelled Union Berlin into the Champions League with a score of 1-0. Prior to Freiburg, who lost 2-1 against Eintracht Frankfurt, Union came in fourth.
After losing 4-2 to Leipzig, Schalke was demoted. Stuttgart will face the club that finishes third in the second division in the relegation/promotion playoff. 1-1 draw between Stuttgart and Hoffenheim.
Bochum defeated Bayer Leverkusen by a score of 3-0 to ensure its survival.