Martin Harnik had given Stuttgart the lead after half an hour and Alexandru Maxim should have made it two with a glaring miss only moments before Frankfurt hit back.
With morale already low, that miss and Rosenthal's goal finished Stuttgart off, and Meier struck a last-gasp winner to increase the pressure on Stuttgart coach Thomas Schneider, whose side are only above the bottom three on goal difference.
Stuttgart had Cacau in the starting XI for the first time this season and he helped give the team a lift with Harnik putting them in front after good work from Maxim after little over half an hour.
Cacau went close to doubling Stuttgart's advantage soon after, but Kevin Trapp kept his shot out, doing the same again to deny Harnik a second goal.
Cacau was adjudged to have fouled Tranquillo Barnetta inside the area midway through the second half, but after initially pointing to the spot, the referee revised his decision after consulting with his linesman.
It seemed like things were finally going the way of Stuttgart, and when Maxim was presented with an open goal in the 78th minute, they could sense the end to their dismal run of defeats.
The Romanian contrived to miss, however, and with the Stuttgart players still scratching their heads wondering how the ball had not gone in, Frankfurt raced up the other end of the field with Rosenthal leading the break and holding his nerve to score.
Stuttgart could no longer lift their heads and Meier punished them in the 89th minute, scoring after Johannes Flum got the better of Georg Niedermeier and pulled the ball back to him.
The win lifts Frankfurt six points clear of their opponents, who are just one goal above Hamburg and in serious relegation danger after yet another defeat.