The win hands Bremen their first three points of the season and leaves them in third spot behind Leverkusen and Nurenberg, while Hannover are in 14th after the defeat.
Hannover scored twice through Czech Jiri Stajner and Iranian striker Vahid Hashemian in the 41st and 66th minutes to cancel out Bremen's early lead taken by Brazilian midfielder Diego after 19 minutes.
Despite having a Tim Borowski penalty kick wasted just before half time, Bremen came back in the second scoring three goals through Hugo Almeida, Miroslav Klose and Daniel Jensen in the 79th 85th and 90th minutes respectively.
Bremen went into the game without Egyptian striker Mohamed Zidan, who missed the game as well as Egypt's friendly against Uruguay due to an ankle injury.
Elsewhere, Wolfsburg drew with Hertha Berlin in the final game of the Bundesliga opening week.