Hannover won 2-0 in Augsburg, Schalke beat Hoffenheim 3-0, Freiburg defeated Borussia Moenchengladbach 2-0 and Werder Bremen drew 1-1 in Mainz after conceding the fastest goal of the season 12 seconds into the match.
In Stuttgart, the home side had the first chance but Dortmund goalkeeper Roman Weidenfeller stopped Ibrahima Traore's effort, while on the other side Marco Reus chipped over Sven Ulreich but narrowly missed the target.
Dortmund defender Marcel Schmelzer had to leave the game when he was kicked in the face accidentally by Martin Harnik in the 24th and was replaced by Lukasz Piszczek.
While Schmelzer was on the way to a hospital with a suspected broken nose, Piszczek scored five minutes after going on. He found the net with a glancing header off a free kick by Reus.
Stuttgart nearly equalized in the 59th. Christian Gentner hit the post, then Mario Goetze cleared on the line from Antonio Ruediger's follow-through.
The home team got its goal in the 63rd when Alexandru Maxim beat Goetze to a loose ball and slotted inside the far post.
But Stuttgart was reduced to 10 men when Niedermeier got his second yellow card for a wild challenge on Goetze.
Ulreich produced superb saves to deny Piszczek, Neven Subotic and Lewandowski before conceding in the 82nd.
Piszczek sent a perfectly timed pass behind Stuttgart's defense and Lewandowski tapped the ball in for his league-high 20th goal of the season.
Dortmund coach Juergen Klopp was upset after the match.
"It was too hard, there was too much aggression. We got manhandled, at times I was worried about the health of my players," said Klopp, whose team travels to Malaga next week for the Champions League quarterfinal.
In Mainz, Bremen kicked off the match but Assani Lukimya immediately lost the ball to Andreas Ivanschitz, who sent the ball into the penalty area where Adam Szalai slid to prod it home after 12 seconds. It was the fourth-fastest goal in Bundesliga history, the other three coming after 11 seconds.
Mainz failed to put the match away and Aaron Hunt notched the equalizer in the 69th.