Borussia Dortmund clinched a second successive German league title on Saturday as Japan star Shinji Kagawa's second-half goal helped secure a 2-0 win at home to Borussia Moenchengladbach.
Kagawa's 59th-minute strike put the result beyond doubt after attacking midfelder Ivan Perisic's first-half header had put the hosts ahead at their sold-out Signal Iduna Park stadium in front of 80,720 fans.
The victory leaves Dortmund eight points clear of second-placed Bayern Munich with just two games left.
"If there was ever a team who deserved to be champions, they are celebrating right over there," said coach Jurgen Klopp, as his team poured giant glasses of beer over each other on the pitch, as is customary for the German champions.
"The boys have shown their character."
Klopp sprinted down the pitch to celebrate with Kagawa after the Japan international's goal and admitted he nearly ended up on the turf.
"It was very, very slippery, but I had to celebrate with him," said Klopp. "Shinji is so cool. He took it all in his stride."
Germany winger Kevin Grosskreutz dropped out of the match after breaking his nose in training, but after singing live on German television, he joined in the celebrations with his team-mates.
"I can't feel a thing anymore," he admitted.
"I think we'll have more than a few beers in the changing rooms and it'll be a pretty big party in Dortmund tonight."
This is the eighth time that Dortmund have won the German league and the fifth time they have won the Bundesliga title since it was founded in 1963.
Victory also extended their record for the German league's longest unbeaten run in a single season to 26 matches.
There was more good news for Klopp as Dortmund's teenage star Mario Goetze came off the bench.
It was the 19-year-old's first appearance since December, as he had been out with a groin injury.
Earlier, France star Franck Ribery hit a 90th-minute winner as Bayern poached a 2-1 win at Werder Bremen to briefly delay Dortmund's title celebrations.
Bremen's Brazil defender Naldo was both hero and villain as his 51st-minute strike from a Claudio Pizarro header put the hosts ahead before an own goal just 14 minutes later allowed Bayern back in the game.
Ribery came off the bench with 25 minutes left to hit the winner with time almost up.
With Bayern due to visit Real Madrid in the second leg of their Champions League semi-final on Wednesday with a 2-1 lead, coach Jupp Heynckes decided to rest a host of stars.
Striker Mario Gomez and wingers Ribery and Arjen Robben were among those who started on the bench.
But the build-up to the Bremen game was over-shadowed by reports in the German media that Ribery had been fined 50,000 euros ($66,000) for a dressing-room bust-up with Robben during half-time in Tuesday's win over Madrid.
German daily Bild reported that the France international lashed out at Robben after an argument over a first-half free-kick.
Bayer Leverkusen remained on course for a Europa League place thanks to a 1-0 win over Hoffenheim, with Germany midfielder Andre Schuerrle hitting a late winner.
Former Germany captain Michael Ballack made a rare appearance from the bench.
At the other end of the table, Kaiserslautern had their relegation confirmed even though they managed a 2-1 win at Hertha Berlin.
Kaiserslautern raced into a 2-0 lead before Hertha pulled a goal back with 60 minutes gone.
Berlin look set to join Kaiserslautern in the second division next season and are locked in a battle with Cologne for 16th place in the league, which gives the chance of survival via a relegation play-off at the season's end.
The side finishing third from bottom faces the third-best team in the second division in a two-legged play-off.
Cologne were held to a 1-1 draw at home to Stuttgart, while Hamburg look to have avoided relegation after their 1-1 draw at Nuremberg.