Robert Lewandowski, Arjen Robben and Philipp Lahm... but no Franck Ribery! We pick our Bundesliga team of the season

Bayern Munich took most of the plaudits after a ruthless assault on the Bundesliga title. Pep Guardiola's men finished up with 90 points - 19 points of second-place Borussia Dortmund - and even managed to rack up 19 wins in a row.

There were 967 goals during the season - an average of 3.16 per game - the first time the league has broken the 3-goals a game average.

Here, Sportsmail's German expert Kit Holden chooses his best XI from the season.

Goalkeeper:

Ralf Fahrmann (Schalke 04)

He may not be as talented as the likes of Manuel Neuer (Bayern Munich), Marc-Andre ter Stegen (Borussia Monchengladbach, now Barcelona) or even Bernd Leno (Bayer Leverkusen), but the Schalke man deserves huge credit.

A bench warmer for a long time, the Chemnitz-born keeper rose through the ranks to take the No 1 spot this season, and with 11 clean sheets in 22 Bundesliga appearances, he has never looked better. Or happier.

Twenty four-year-old Toprak has been one of the few Leverkusen players to have maintained focus throughout the season.

Aside
from his reliable defensive displays, he also scored two crucial goals
for his club. One against Real Sociedad to ensure Bayer’s progression to
the second round of the Champions League, and one against Werder Bremen
on the last day of the season to secure them fourth spot.

Kevin Grosskreutz (Borussia Dortmund)

With Lukasz Piszczek out for nearly a whole year, the right-back position was always going to be a headache for Jurgen Klopp.

Step
up Grosskreutz, the man who always gives everything for his beloved
Borussia. His terrier-like, yet gifted approach to the game did a lot to
ease Dortmund’s defensive worries.

Adaptable: Bayern Munich's Philipp Laham (left) in his new midfield role against Dortmund's Nuri Sahin

Midfield:

Philipp Lahm (FC Bayern)

Pep Guardiola’s first and most memorable move as Bayern coach has been to employ Lahm as a holding midfielder.

The Bayern and Germany captain has thrived in the role, with a pass completion rate of 92 per cent. When Bayern are on top – which is often the case – it has been Lahm directing proceedings.

Daniel Baier (FC Augsburg)

The 30-year-old
suffered for a long time under Felix Magath at Wolfsburg, and only
since joining Augsburg in 2010 has he been able to show his quality.

This year he made a belated breakthrough as the driving force behind Augsburg’s unlikely push for European football.

For the whole season, he has been the 'brain' of a team punching far above its weight.

It is a little difficult to put any Hamburg player in a team of the season, given how bad they have been.

Without
wonderkid Calhanoglu, though, the grand old club would never have been
able to avoid relegation last weekend. Billed as 'the next Ozil', he is
already on the wishlist of top European clubs.

Roberto Firmino (TSG Hoffenheim)

With 16 goals, the Brazilian has scored more this season than in his first two years in Germany combined.

His link-up play with Kevin Volland has driven Hoffenheim to safety, and often made them a joy to watch.

Another player coveted all over Europe, this has without a doubt been Firmino’s breakthrough year.

Improvements: Arjen Robben had his best season yet for Bayern under the management of Pep Guardiola

Arjen Robben (FC Bayern)

Many expected him to clash with Guardiola, but Robben has been one of the Catalan’s biggest success stories.

How
long harmony will last is another matter, but this season has been
Robben’s finest in a Bayern shirt, despite a mid-season injury.

Forward:

Robert Lewandowski (Borussia Dortmund)

The Polish international has been the consummate professional. Despite his impending move to Bayern being the worst kept secret in football history for the whole season, he has not once taken his foot off the gas.

With 20 goals, he was the Bundesliga’s top scorer this season.

Marksman: Robert Lewandowski (right) was top scorer in his last season before leaving Dortmund for Bayern