Two goals from Pierre-Michel Lasogga gave Hamburg the lead in a first half they dominated.
It was a different story in the second 45 minutes, though, with Anthony Ujah pulling a goal back for Bremen after Claudio Pizarro had missed a penalty.
However, the visitors ran out of steam and Hamburg were able to hold for a victory which moves them six points clear of their rivals, who remain in the relegation play-off berth.
Hamburg got off to a flyer with a goal inside five minutes.
Nicolai Muller just managed to keep the ball in play near the right touchline before racing into the penalty area and sending in a low cross which provided Lasogga with an easy tap-in from two yards.
It was the first goal from open play since October for Lasogga, who showed how much it meant to him as the Volksparkstadion erupted.
Hamburg continued to enjoy the better of the game with Felix Wiedwald palming away Michael Gregoritsch's free-kick before Bremen nearly found a route back into the game on the counter-attack, with Florian Grillitsch denied by Jaroslav Drobny.
Gregoritsch's header was saved excellently by Wiedwald before Lasogga doubled Hamburg's lead after half-an-hour, this time meeting Matthias Ostrzolek's cross from the left to head in from four yards.
Clemens Fritz's shot was turned wide by Drobny with an excellent fingertip save before Fin Bartels curled Bremen's last shot of the half wide.
A foul by Johan Djourou on Pizarro inside the penalty area gave the Peru star the opportunity to bring Bremen back into the game in the 57th minute, but Drobny dived the right way and clutched Pizarro's spot-kick to his chest.
Drobny and Hamburg's resistance was finally broken in the 65th minute when Ujah scored at the second time of asking, heading in after Drobny saved his first effort.
Pizarro headed inches wide in the fifth minute of stoppage-time as Hamburg held on for a win which takes them closer to survival, and leaves Viktor Skripnik's men deep in trouble inside the bottom three.