Having failed to score in seven games over the last four weeks for Dortmund and Norway, Haaland converted a penalty and tapped home a second in the win at Signal Iduna Park.
Haaland claimed a club record with his ninth brace in the Bundesliga this season.
The 20-year-old 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.
Dortmund stayed fifth, but moved to within four points of fourth-placed Eintracht Frankfurt, which crashed to a 4-0 defeat at Borussia Moenchengladbach on Sunday.
"We've got a second chance to qualify for the Champions League," Dortmund captain Marco Reus told Sky, who said his side was especially "up for it" after Frankfurt lost.
"We wanted to close the gap -- that was our big goal today."
Dortmund bounced back from its UEFA Champions League quarter-final exit on Thursday (AEST) 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 its 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 has now lost five straight league games and is just four points above the relegation play-off spot.