Bremen had kept clean sheets in their opening two Bundesliga games, and they looked capable of making that three until Robert Lewandowski broke the deadlock in the second half at the Signal Iduna Park.
Jakub Blaszczykowski crashed an effort against the crossbar and Marco Reus fired just wide in a frustrating first-half for the home side.
Jurgen Klopp opted to rest Pierre-Emerick Aubameyang and Sven Bender, with Marco Reus and Sebastian Kehl taking their respective spots in the starting line-up.
Luca Caldirola passed a fitness test in order to start for Bremen, while Marko Arnautovic was favoured ahead of Nils Petersen in the central striking role.
In a lacklustre opening, it was Dortmund who created the better openings.
Nuri Sahin volleyed wide from Marcel Schmelzer’s cross, while Henrikh Mkhitaryan found himself on goal after a neat one-two with Lewandowski, but could only lift his effort over.
Reus was continually Dortmund’s biggest threat and went close after collecting Kehl’s cross-field ball, but could only fire an effort wide of Sebastian Mielitz’s far post.
The home side sparked into life in dying stages of the half, Blaszczykowski was left to rue his luck with 10 minutes in the half left as he burst free on the right-hand side and unleashed a fierce drive that cannoned back off the crossbar.
Just three minutes before half-time, Reus had a deflected effort that almost fell kindly for Lewandowski but the ball narrowly evaded the Polish striker at the far post. Neven Subotic saw a header cleared off the line by Aaron Hunt with Sahin blazing over the rebound.
And Dortmund were nearly punished for their profligacy on the stroke of half-time as Arnautovic flashed a narrow effort across Roman Weidenfeller from the right channel.
After a dominant first-half display Dortmund finally breached the Bremen's defence in the 55th minute.
Kevin Grosskreutz’s short pass was collected by Reus in the box and he fired a ball hard along the six-yard box where Lewandowski was on hand to tap home.
The goal seemed to knock the wind out of Bremen's sails, and they were nearly two behind when Schmelzer's hanging cross was palmed away by Mielitz and Sahin hit an acrobatic scissor kick that sailed over.
Aubameyang was introduced to the action in place of Blaszczykowski, and almost doubled the lead in the 75th minute as he broke free down the right-hand side but his low driven effort was saved by the feet of Mielitz.
Dortmund continued to press, and with seven minutes remaining Mats Hummels flicked on Reus' corner to Lewandowski but his effort was blocked on the line by Hunt.
Weidenfeller had to be alert late on, as he produced a smart save at the near post from substitute Franco Di Santo to preserve the points for Dortmund and send them top ahead of Saturday's action.
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.