The home side controlled the majority of the opening period and managed to break the deadlock with 17 minutes on the clock. Pirmin Schwegler picked out Stefan Aigner inside the area and he duly converted from 10 yards out.
Having played a role in helping his side take the lead, Schwegler then contributed to the hosts being pegged back three minutes after the restart. He brought down Arthur Boka inside the area and Vedad Ibisevic dispatched the resultant penalty.
Stuttgart were in ascendancy from there on in and eventually claimed the winning goal 19 minutes from time. Alexandru Maxim swung over corner for Georg Meier Lower, who headed into the net from close range.
The defeat means that Frankfurt remain fourth in the Bundesliga standings, while the away side have moved up to 12th.