A first half barrage of attempts from Jurgen Klopp's men was to no avail but the Pole struck midway through the second half to secure all three points
Werder had kept clean sheets in its opening two Bundesliga games and it looked capable of making that three until the Polish striker broke the deadlock in the second half at 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 lineup.
Luca Caldirola passed a fitness test in order to start for Werder, while Marko Arnautovic was favored ahead of Nils Petersen in the central striking role.
In a lackluster opening, it was Dortmund which 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 Werder goalkeeper Sebastian Mielitz’s far post.
The home side sparked into life in the dying stages of the half, Blaszczykowski was left to rue his luck with as he burst free on the right hand side and unleashed a fierce drive that cannoned back off the crossbar.
Just three minutes before halftime, 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 was nearly punished for its profligacy on the stroke of halftime as Arnautovic flashed a narrow effort across BVB goalkeeper Roman Weidenfeller from the right channel.
After a dominant first half display Dortmund finally breached the visitors' defense 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 Werder'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 keep them top ahead of Saturday's action.