Hoping to register a fourth successive Friday night success, the hosts were ahead after only four minutes as the returning Hofmann ghosted into the penalty to sublimely fire Alassane Plea’s cross beyond the grasp of Florian Muller.
In pursuit of extending their unbeaten record to six matches against Gladbach, Stuttgart struggled to establish a significant threat in the final third, as Tobias Sippel remained an observant spectator throughout the opening exchanges.
After controlling the opening exchanges, Daniel Farke’s side were then made to sweat as VAR recommended referee Dr Matthias Jollenbeck upgrade Ramy Bensebaini’s yellow card to a red after the Foals’ defender had clashed with Waldemar Anton.
However, to the relief of the majority within Borussia-Park and Bensebaini himself, the doctor stuck with his initial prognosis and handed the Algerian international a lucky reprieve.
On course to bring a welcoming conclusion to a hat-trick of defeats across all competitions, Monchengladbach deservedly doubled their lead in the 25th minute when the menacing Plea put it on a plate for strike-partner Thuram to clinically slot past Muller.
But, with the prospect remaining in the relegation zone, Stuttgart halved the deficit 10 minutes before the break, as on-loan Sporting CP forward Tiago Tomas fired a sweetly-struck solo strike past Sippel.
After a slow start to the second period, stand-in Stuttgart coach Michael Wimmer introduced Silas Katompa Mvumpa and Josha Vagnoman in an attempt to reignite his interim troops.
However, Wimmer’s alterations failed to have the desired effect in a second half devoid of clear-cut goalscoring opportunities, as substitute Herrmann fired in a third for Monchengladbach in the fourth minute of injury time.
The victory leaves Borussia Mönchengladbach outside of the European qualification positions on only goal difference, while by contrast, Stuttgart remain perilously above the Bundesliga trapdoor after failing to register an away league victory so far in 2022.
Flashscore Man of the Match: Alassane Plea (Borussia Monchengladbach)