Hannover earned their place in the Bundesliga next season and sent Freiburg into the second division with a 2-1 win.
A late Nils Petersen goal gave Freiburg a shock 2-1 win over Bayern Munich and kept them above the relegation zone.
Hamburg defended their place above Freiburg in the Bundesliga thanks to a last-gasp Gojko Kacar header.
Paderborn came from behind to move out of the relegation zone and above their hosts Freiburg with a 2-1 win
Borussia Dortmund closed in on the Bundesliga top six with victory, while Bayer Leverkusen stumbled to a 1-1 draw at Cologne.
Freiburg fought back from two goals down to snatch a point in a 2-2 draw at 10-man Stuttgart.