Borussia Dortmund and Hoffenheim each scraped Champions League qualification on goal difference after holding off the threat of Bundesliga rivals Bayer Leverkusen.
Hoffenheim took third spot in Germany after leapfrogging Dortmund with a 3-1 victory on Saturday, while Leverkusen, who also finished on 55 points, had to settle for the Europa League following a 3-2 win over Hannover which left them fifth.
Goals from Andrej Kramaric, Adam Szalai and Pavel Kaderabek earned Hoffenheim’s deserved success at Rhein-Neckar-Arena, with Marco Reus briefly drawing the visitors level.
Dortmund contributed to their own downfall on the final day and the result means they end an underwhelming season having failed to win away against any of their fellow top-six sides.
A home defeat to Mainz last weekend ensured their quest to qualify for Europe’s premier club competition for a sixth season out of seven would go to the final game.
Head coach Peter Stoger, who replaced sacked predecessor Peter Bosz in December, would have been relieved they had goal difference to fall back on following a poor first-half performance.
After Portgual international Raphael Guerreiro twice tested Hoffenheim keeper Oliver Baumann in the opening 20 minutes, visiting goalkeeper Roman Burki gifted the hosts a 26th-minute opener with a costly error.
The Switzerland international, who was replaced in stoppage time to allow Dortmund’s veteran keeper Roman Weidenfeller a farewell appearance after 16 seasons with the club, rushed a clearance following an poorly executed Cruyff turn and then had the ball hammered past him by Kramaric.
Dortmund’s out-of-form forward Andre Schurrle should have spared Burki’s blushes by levelling seven minutes later.
The struggling former Chelsea forward, who faces being left out of Germany’s World Cup squad after scoring just one league goal this season, was slipped through one-on-one with Baumann before placing his effort into the side netting.
With Leverkusen comfortably leading against Hannover and threatening to steal fourth spot, the hosts knew they could not rest on their laurels.
Szalai forced a decent stop out of Burki before Steven Zuber’s follow-up effort was hacked away by Lukasz Piszczek.
Reus then levelled for the visitors to silence the home crowd, converting his fourth goal in four games from close range following Guerreiro’s run down the left.
Parity lasted only five minutes though as Hungary striker Szalai dinked the ball over Burki to complete a flowing team move.
And Hoffenheim wrapped up the points 10 minutes later as Kaderabek finished following a goalmouth scramble from a free-kick which included Dortmund’s Manuel Akanji handling on the goal-line.
While Leverkusen had been leading 3-0, a couple of late Hannover goals at the BayArena eased the pressure on both sides before the full-time whistle was greeted by a mix of relief and jubilation.