Mirko Slomka's men went ahead just before the half-hour mark as Szabolcs Hustzi capitalised on a lapse in concentration in the Hamburg defence to send the ball beyond goalkeeper Rene Adler.
But the visitors were only in front for three minutes at the Imtech Arena, as Milan Badelj ended a 29-match barren spell with a sensational volley to equalise.
And Hamburg were ahead one minute after the interval, when Heiko Westermann's cross from the right was headed home by Maximilian Beister.
Hakan Calhanoglu sealed all three points for Hamburg six minutes from time, driving an effort across goal and beyond Ron-Robert Zieler into the bottom right-hand corner of the net.
The result leaves Hannover 13th, just three points clear of the relegation play-off position, while Hamburg leapfrog their opponents into 11th.
In the day's other match, Mainz survived a late Werder Bremen fightback to triumph 3-2 and record back-to-back victories for the first time since opening the season with three consecutive wins.
Nicolai Muller put the visitors in front in the seventh minute at the Weserstadion, firing home a left-footed strike from 25 yards
Shinji Okazaki then put Mainz in a commanding position with a goal in each half - both from close range - before the Bremen resurgence began.
Eljero Elia pulled a goal back in the 85th minute and Franco Di Santo netted a second in the dying moments. But it was too little, too late for Bremen, who have just one win from their last seven fixtures.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.