Frankfurt finally end goal drought but still lose
Frankfurt, chasing a first-ever place in the Champions League, had not scored in their previous five outings but ended their drought in style when Pirmin Schwegler's majestic pass set up Stefan Aigner for their first goal in eight hours 41 minutes play.
However, Schwegler turned villain early in the second half when he gave away a penalty with a foul on Arthur Boka and Vedad Ibisevic converted the spot-kick.
Stuttgart grew in confidence and won the game when Georg Niedermeier, who had earlier denied Alexander Meier at the other end with a last-ditch intervention, leapt to head in Alexandru Maxim's corner.
Frankfurt, who have taken only nine points in as many games since the winter break remain in fourth, which earns a place in the Champions League final qualifying round.
They have 39 points, level with Schalke 04 and only one ahead of Mainz 05, Borussia Monchengladbach and Hamburg SV.
Stuttgart's win was only their second since the season resumed in January and left them 12th with 32 points.
Monchengladbach, also hoping to play in the Champions League for the first time, boosted their chances with a 1-0 win over Hannover 96.
Patrick Herrmann's clever flick played Luuk de Jong through on goal and the Dutchman neatly lifted the ball over onrushing Ron-Robert Zieler 10 minutes before half-time.