Dortmund's Dutch striker Donyell Malen scored his first Bundesliga goal since his summer transfer from PSV Eindhoven, but Stuttgart forced a mistake in the hosts' defence which led to an equaliser by Roberto Massimo.
With time running out, Dortmund counter-attacked from their own box and Reus tapped into an empty net to snatch victory after Bayern had suffered a shock 2-1 defeat at strugglers Augsburg on Friday.
"We didn't really shine, but we fought," Dortmund defender Mats Hummels told Sky. "It was another step in the right direction."
Dortmund host Bayern in a potential top-of-the-table clash in a fortnight's time.
Bayern's defeat at Augsburg was only their third loss in all competitions this season, but Julian Nagelsmann admitted being "really angry" for the first time as coach after a poor first-half performance.
Yet less than 24 hours later, Dortmund laboured in their bid to bridge the gap in the table.
Home goalkeeper Gregor Kobel showed why Dortmund paid Stuttgart 15 million euros ($17 million) for him in the close season as he denied former teammate Tanguy Coulibaly with a superb save just before the break.
The injured Erling Braut Haaland celebrated in the stands when his stand-in Malen scored from the edge of the area.
However, Dortmund's defensive frailties this season were again exposed when Manuel Akanji cheaply yielded possession and Stuttgart quickly moved the ball to Massimo who fired past Kobel.
However, Reus finished off a counter-attack to claim his 145th goal for Dortmund and secure a crucial three points.