Franck Ribery hailed a "special" moment as he and Arjen Robben both scored in their final game for Bayern Munich at the Allianz Arena on Saturday to wrap up a 5-1 win over Eintracht Frankfurt and a seventh successive Bundesliga title. "It was a special moment, but also a difficult one," Ribery told Sky.
"These were my last moments at the Allianz Arena, with the fans and with my team, after being here for 12 years."
"There is a time for everything and you have to accept it."
The fairytale farewell for club icons Robben and Ribery saw Bayern end an unusually tight title race two points ahead of rivals Borussia Dortmund, who beat Borussia Moenchengladbach 2-0.
"You couldn't write a better finale than that," said Bayern coach Niko Kovac.
Nine points behind Dortmund in December, Bayern lost just one game between January and May as they bounced back to be crowned German champions for the 29th time in their history.
Robben and Ribery, who will both leave the club at the end of the season, came off the bench against Frankfurt to score Bayern's fourth and fifth goals and end Dortmund's hopes of pulling off a final day miracle.
Their departure marks the end of a glistening decade of success for Bayern, who are now set for a major squad overhaul ahead of next season, having already signed World Cup winners Benjamin Pavard and Lucas Hernandez.
Kingsley Coman gave Bayern a dream start, slotting home a Thomas Mueller through ball after just four minutes.
There was brief hope for Dortmund as both they and Frankfurt scored either side of half-time.
After Gladbach dominated the first half, Jadon Sancho smashed in the opener for Dortmund, and Reus doubled the lead after the break.
In Munich, Sebastien Haller bundled in a shock equaliser at a corner just after the break, but Bayern responded furiously, and David Alaba restored the lead in a matter of minutes.
Dortmund's hopes lay in tatters when Renato Sanches blasted the ball in from close range to score his first Bundesliga goal and put Bayern 3-1 up.
Ribery and Robben each came off the bench to standing ovations in the second half, and Ribery danced through the Frankfurt ranks to seal the title on 72 minutes, before Robben completed a fairytale afternoon with a 78th minute tap-in.
Leverkusen secure top four spot
The defeats for Gladbach and Frankfurt saw Bayer Leverkusen sneak into the fourth Champions League spot behind RB Leipzig, as they won 5-1 away to Hertha Berlin.
Valentino Lazaro cancelled out Kai Havertz's opener but Julian Brandt and a Lucas Alario hat-trick ensured a comfortable win for Leverkusen.
Third-place RB Leipzig lost 2-1 to Werder Bremen, 40-year-old Claudio Pizarro grabbing the winner after Nordi Mukiele had equalised Milot Rashica's opener.
Leipzig-bound coach Julian Nagelsmann will leave Hoffenheim without European football, meanwhile, after Mainz came from behind to snatch a late 4-2 win and knock Hoffenheim down to ninth.
Daniel Brosinski and Jean-Paul Boetius cancelled out first-half goals from Ishak Belfodil and Andrej Kramaric, before Boetius and Jean-Philippe Mateta snatched the win in injury-time.
Wolfsburg will join Gladbach and Frankfurt in the Europa League after a Wout Weghorst hat-trick and goals from Robin Knoche, Daniel Ginczek, Elvis Rexbechaj and Josip Brekalo saw them thrash Augsburg 8-1.
Julian Schieber picked up a consolation goal for Augsburg before a Kevin Danso own-goal completed the rout.
At the other end of the table, Stuttgart held Schalke to a 0-0 draw, and Nicolai Mueller's late goal was not enough for relegated Hanover, as Rouwen Hennings and Kenan Karaman fired Fortuna Duesseldorf to a 2-1 win.
Mid-table Freiburg dispatched bottom club Nuremberg 5-1, Nils Petersen adding a second-half brace to goals from Marco Terrazzino, Luca Waldschmidt and Vincenzo Grifo, before Eduard Loewen netted a consolation goal for Nuremberg.