Nurnberg 1-0 Cologne
Hertha 1-3 Bayern
Wolfsburg 3-1 Eintracht
Monchengladbach 1-1 Leverkusen
Mainz 0-0 Schalke
Bochum 0-3 Hannover
Hoffenheim 1-1 Stuttgart
Freiburg 3-1 Dortmund
Bremen 1-1 Hamburg
Schalke could only draw with Mainz, meaning that the unlikely scenario of them pegging back an eighteen goal difference wasn't going to happen. Indeed, Mainz could have done better, but Manuel Neuer saved Miroslav Karhan's penalty to preserve a goalless draw. That sealed what we already kind of knew: Bayern are champions. Louis van Gaal resisted making wholesale changes ahead of the Champions League final and his first choice XI took the field and duly saw off relegated Hertha. Ivica Olic put them ahead on 20 minutes, but Gustavo Ramos had the Berliners level on the hour. Fittingly, it was player of the season Arjen Robben who won it with two late goals. Bayern struggled early on as van Gaal struggled to impose his style on the club, but Robben arrived and, after that inspired win over Juventus in the Champions League, they've been unstoppable. As well as that Champions League final, Bayern take on Bremen in the final of the DFB Pokal - the German Cup to you - next Saturday.
Schalke finish second then, though the big rebuilding job starts now and Kevin Kuranyi is first out of the door, on his way to Dynamo Moscow on a free. Bremen make it into third and the Champions League qualifiers. They were held 1-1 by Hamburg, Ruud van Nistelrooy - left out of the initial Dutch World Cup squad in the week - equalising late on after Claudio Pizarro had put Bremen ahead. Leverkusen were also held 1-1 and therefore couldn't overhaul Bremen. Patrick Helmes, at the end of an injury-ravaged season, put them in front, but Roel Brouwers squared it up for Gladbach. Dortmund join Leverkusen in the Europa League despite losing at Freiburg. Lucas Barrios put BvB ahead, but Mohamadou Idrissou equalised and Demba Cissé added a late double for a 3-1 win.
Down at the bottom, Hannover secured their survival and condemned Bochum to the drop with a 3-0 win. Bochum have been on a miserable run and couldn't turn it round before it was too late. All the goals came before half-time, Arnold Bruggink with the first early on, Mike Hanke halfway through the first 45 and Sergio Pinto just before the break. An emotional Hannover team dedicated the win to the tragic Robert Enke. Hannover's win meant Nurnberg were consigned to the relegation/promotion play-off whatever happened in their game against Cologne. As it was, Andreas Ottl signed off his loan spell from Bayern with a late winner, but Nurnberg must now face Augsburg over two legs for the final Bundesliga spot, Kaiserslautern and St Pauli having secured promotion already from 2. Bundesliga.
Finally, Stuttgart miss out on European football after drawing with Hoffenheim. Cacau had Stuttgart in front, but Boris Vukcevic ensured a point for the Villagers. Wolfsburg sign their defence off with a win, Zvjezdan Misimovic, Sascha Riether and Edin Dzeko - who finished as top marksman in the league - putting them into a 3-0 half-time lead. Halil Altintop pulled back a late consolation which means Eintracht finish one place and one point behind local rivals Mainz.
And that's your lot from the Bundesliga for another season. Here's our team of the year, lining up in a 4-4-2:
Manuel Neuer (Schalke); Phillip Lahm (Bayern), Sami Hyypia (Leverkusen), Heiko Westermann (Schalke), Marcell Jansen (Hamburg); Arjen Robben (Bayern), Ze Roberto (Hamburg), Cacau (Stuttgart), Mesut Ozil (Bremen); Edin Dzeko (Wolfsburg), Ivica Olic (Bayern).
Honourable mentions: Rene Adler (Leverkusen), Joris Mathijsen (Hamburg), Diego Contento (Bayern), Stefan Kiessling (Leverkusen), Tranquilo Barnetta (Leverkusen), Christian Gentner (Wolfsburg), Aaron Hunt (Bremen), Marko Marin (Bremen), Ivan Rakitic (Schalke).