Bayern win Bundesliga as Dortmund slip up in season finale
Dortmund had gone into the last game of the season in top spot but stumbled to a 2-2 against visitors Mainz 05, allowing Bayern to pip them in the tightest league race in years.
Bayern Munich have won their 11th straight Bundesliga title, a 90th minute goal from Jamal Musiala sealing a late 2-1 win at Cologne after Borussia Dortmund were held 2-2 at home to Mainz.
With Bayern needing a win to overtake Dortmund, the England-raised Germany forward hammered home with the clock winding down, ensuring the Bavarians keep their grip on the title for another season.
Dortmund knew a win would guarantee a title, but were 2-0 down after just 25 minutes, with striker Sebastien Haller also having missed a penalty.
Dortmund scored two second half goals to draw the game but the point was not enough, Bayern winning the title on goal difference.
Heading into the final matchday, with Dortmund two clear atop the table, Bayern knew only a win would give them hope of a title, while hoping for a Dortmund collapse.
France forward Kingsley Coman struck after eight minutes to set down the gauntlet to Dortmund, playing one hour to the north.
Despite a bright start, Dortmund soon found themselves behind 1-0 after 15 minutes, Andreas Hanche-Olsen tapping in from a corner.
Dortmund were handed a lifeline when Raphael Guerreiro was brought down in the box, but Sebastien Haller failed to convert the penalty.
Mainz doubled their lead shortly after, Karim Onisiwo heading in from close range as the visitors began tearing up the home fans' script.
The home side, who had scored 15 goals in their past three home games, grew nervous and lacked potency in front of goal, while Mainz grew bullish and had several chances on the counter.
With time winding down, Guerreiro gave the home side hope, scoring with 20 minutes remaining.
- Schalke relegated -
Word filtered around the ground that Cologne had equalised with ten minutes remaining, Dejan Ljubicic converting from the spot, but Musiala's strike again took Bayern atop the table.
Niklas Suele added another in the sixth minute of injury time, but Dortmund were unable to conjure the comeback which would have broken Bayern's hold on the German title.
One bright spot for the disappointed home side was that arch rivals Schalke were relegated, after a 4-2 loss at RB Leipzig.
Schalke had fought back to equalise from two goals down, but Leipzig scored twice in the final ten minutes to secure Schalke's fate.
Elsewhere, Union Berlin secured Champions League football for the first time with a 1-0 home win over Werder Bremen.
Union captain Rani Khedira scored a goal with nine minutes remaining, ensuring victory for the home side and keeping alive a remarkable fourth season in the top division.
Also on track for a first ever Champions League berth but needing Union to slip up, Freiburg lost 2-1 away at Frankfurt. Leading 1-0 after a Vincenzo Grifo strike, Freiburg conceded two goals in the last 10 minutes and will instead play Europa League next season.
Stuttgart's 1-1 draw at Hoffenheim means they finish third last, ensuring a shot at staying in the second division through the relegation playoff.
Bochum's 3-0 win at Leverkusen also ensures they will play top division football for another season, taking them from second last to the safety of 14th.
A ten-man Augsburg lost 2-0 at Borussia Moenchengladbach but will also stay up, having finished 15th.
Relegated Hertha Berlin won 2-1 away at Wolfsburg, denying the hosts a chance at leapfrogging Leverkusen into Europe.