With Schalke losing 3-0 at Nuremberg on Saturday, Frankfurt could have moved three points clear of their rivals in the battle for fourth place if they had beaten Stuttgart.
But the poor recent form which had seen Frankfurt earn just three points from their previous five matches struck again as they suffered a ninth defeat of the campaign.
Stefan Aigner gave Frankfurt the lead after 17 minutes - their first goal in six weeks - but Vedad Ibisevic equalised from the spot in the 48th minute and Georg Niedermeier gave Stuttgart the victory with his strike 19 minutes from time.
Schalke's loss gave Frankfurt a major boost coming into today's game, and they looked set to take advantage after finally ending their barren run in front of goal when a superb through-ball from Pirmin Schwegler put Aigner away and he poked home first-time past outrushing goalkeeper Sven Ulreich.
The home side could not keep hold of that lead, though.
Stuttgart almost equalised in the 27th minute when Stefano Celozzi's 25-yard effort flew just wide of the post, while Christian Gentner also went close for the visitors eight minutes later with an effort that hit the side-netting.
Stuttgart were unable to get back on level terms before the break, but they needed just three minutes of the second half to manage it with Ibisevic firing home from the penalty spot after Schwegler had fouled Arthur Boka.
Frankfurt came close to regaining the lead after 67 minutes following a counter-attack but Takashi Inui's shot went just left of the post, and it was Stuttgart who would go on to claim the win.
The deciding goal came from a set-piece with Niedermeier heading in Alexandru Maxim's corner from the right side, helping Stuttgart remain eight points clear of the bottom three.