The win boosted their chances of qualifying for the UEFA Champions League next season.
Christian Pulisic, Michy Batshuayi and Maximilian Philipp shared the goals as Dortmund closed the gap on second-placed Schalke to one point.
They also handed VfB Stuttgart their first defeat in eight games since Tayfun Korku took over as coach.
Stuttgart had the better of the opening exchanges but Dortmund went ahead in the 38th minute.
That was when Pulisic’s attempted cross looped over Ron-Robert Zieler and into the net at the far post.
Batshuayi extended Dortmund’s lead three minutes into the second half when he exchanged passes with Nuri Sahin and side-footed past Zieler.
It was his seventh goal in nine Bundesliga games since joining on loan from Chelsea.
Pulisic was involved in the third goal in the 59th minute.
He headed the ball to Philipp who scored at the second attempt after his first shot was stopped by Zieler.(Reuters/NAN)