Christian Schulz scored twice as Hannover ended an eight-game losing run in the Bundesliga, with Stuttgart succumbing to a 2-1 loss.
Thomas Schaaf's rock-bottom visitors fell behind to Timo Werner's early opener, but Schulz proved the unlikely hero.
The centre-back nodded in the leveller just past the half-hour mark and left it late to secure three crucial points, netting seven minutes from time to give Hannover their first victory since November 28.
That result saw Schaaf's men close the gap to 16th-placed Werder Bremen, who needed an 89th-minute Claudio Pizarro goal to secure a 2-2 draw at home to Darmstadt.
Sandro Wagner's penalty and Aytac Sulu's strike looked to have given Darmstadt their third away win in four matches, but the veteran Pizarro turned in a last-gasp corner to ensure the spoils were shared.
It was business as usual at the top of the table as Bayern Munich overcame Wolfsburg 2-0.
Kingsley Coman's volley and Robert Lewandowski's finish with the outside of the boot did the damage in the second half, helping Pep Guardiola's side move on from the disappointment of surrendering a two-goal lead against Juventus in Tuesday's Champions League clash.
Wolfsburg's scant consolation came from the fact they did not suffer the kind of humiliation that befell them in September's reverse fixture, when Bayern won 5-1 with Lewandowski scoring all five goals in nine second-half minutes.
Elsewhere, Hamburg drew 1-1 with Ingolstadt.