Bayer Leverkusen battled for the top four all season, partly thanks to Kai Havertz, who took on the captain's armband and led by example despite only turning 21 in June.
Leverkusen did struggle defensively at times early in the season, so the addition of Edmond Tapsoba at centre-back helped make them more stable.
Borussia Dortmund finished second once again, with Mats Hummels strengthening the backline after returning from Bayern Munich, while Thorgan Hazard also proved an astute signing. Erling Haaland was sensational in the Bundesliga after arriving with Emre Can in January.
RB Leipzig's Christopher Nkunku was also a great new addition to the league, while Marcus Thuram formed a brilliant partnership with Alassane Plea at Borussia Monchengladbach.
Konrad Laimer's relentless pressing was crucial to Leipzig's strong season, allowing Marcel Sabitzer to get further forward and chip in with important goals.
Serge Gnabry continued to improve at Bayern Munich, where David Alaba made the centre-back role his own even after the club broke their transfer record to bring in a defender.
Further down the table, Suat Serdar was a big presence for Schalke, who went on a winless run after he was injured. Florian Niederlechner and Sebastian Andersson were among the league's top scorers and helped their sides avoid relegation.
Rouwen Hennings was a rare bright light in Fortuna Dusseldorf's side, while Wout Weghorst led the line brilliantly for Wolfsburg as they qualified for the Europa League. Filip Kostic was Eintracht Frankfurt's creative spark, while things look brighter in Berlin thanks to the signing of Matheus Cunha for Hertha.