Haaland claimed a club record with his ninth brace in the Bundesliga this season.
The Norwegian striker could have completed a hat-trick after powering in a late header, which was ruled offside, before Mats Hummels was credited with Dortmund’s fourth goal.
Haaland has now scored 35 goals in all competitions this term.
His team stayed fifth, but moved to within four points of fourth-placed Eintracht Frankfurt, who lost to Borussia Moenchengladbach on Saturday.
Dortmund bounced back from their Champions League quarter-final exit on Wednesday against Manchester City.
However, Bremen took a shock lead when a long ball found Milot Rashica, who outsprinted Hummels and fired past Dortmund goalkeeper Marwin Hitz on 14 minutes.
Dortmund fought back with three goals in nine first-half minutes.
The hosts drew level as 18-year-old US international Giovanni Reyna equalised on 29 minutes with a thunderbolt of a shot.
Five minutes later, Haaland converted a spot-kick after Dortmund captain Marco Reus was fouled in the area.
Haaland grabbed his second by tapping in after Bremen midfielder Kevin Moehwald had deflected Reyna’s shot onto the post.
England midfielder Jude Bellingham forced a big save from Bremen goalkeeper Jiri Pavlenka before the break.
Dortmund then rode their luck as Bremen midfielder Maximilian Eggestein struck the post with an hour gone.
However, the hosts finished the stronger.
Haaland’s header was ruled out and Reyna fired wide just before the ball went in off Hummels and Bremen defender Theodor Gebre Selassie.
Bremen have now lost five straight league games and are just four points above the relegation play-off spot.
#Haaland #ends #mini #goal #drought #Dortmund #Bremen