Bundesliga Wrap: Bayer secure top-four spot
Sascha Lewandowski's men knew defeat could open the door for either Wolfsburg or Borussia Monchengladbach to pip them to fourth spot, and their fans will have been fearing the worst when they fell behind to Theodor Gebre Selassie's 21st-minute opener.
They were level by half-time, though, Omer Toprak equalising 12 minutes before the break, with Son Heung-Min netting the winner in the 53rd minute.
The South Korean nodded in the rebound after Eren Derdiyok had headed against the bar to leave the result between Wolfsburg and Gladbach irrelevant.
As it happened, Wolfsburg won 3-1 thanks to goals from Kevin De Bruyne, Ivan Perisic and Robin Knoche.
At the wrong end of the table, both Nuremburg and Eintracht Braunschweig were consigned to automatic relegation following respective away defeats.
Both sides went into their games with a chance of overhauling Hamburg and earning a relegation play-off with the third-placed team in 2.Bundesliga, but neither outfit was able to find the result to extend their season.
Nuremburg were thrashed 4-1 at Schalke to fall to their seventh consecutive defeat, and they have now been relegated from the top flight eight times, more than any other club.
Braunschweig, meanwhile, went down to their fifth successive reverse, 3-1 at Hoffenheim, with those results coming as a relief for Hamburg, who fell to a 3-2 loss at Mainz.
Elkin Soto put the home side in front after seven minutes, only for Pierre-Michel Lasogga to level matters five minutes later.
Second-half strikes from Yunus Malli and Shinji Okazaki put the game beyond Hamburg, who did pull one back through Ivo Ilicevic, but Mirko Slomka's men will now go into a play-off to preserve their ever-present status in the top flight.
Bayern Munich ended their title-winning season with yet another victory, Claudio Pizarro striking an injury time winner in a 1-0 success over Stuttgart, who confirmed Huub Stevens would step down as coach.
Robert Lewandowski signed off on his Borussia Dortmund career by scoring twice in a 4-0 win at Hertha Berlin, his final tally of 20 goals leaving him as the league's top scorer.
Elsewhere, Hannover beat Freibrug 3-2 and Augsburg enjoyed a 2-1 success at home to Eintracht Frankfurt.