Substitute Alexandru Maxim scored the first on 69 minutes, and Martin Harnik sealed the victory a minute from time.
The result lifted Stuttgart back out of the bottom three and within two points of their visitors, after Hamburg's 2-1 triumph over Bayer Leverkusen on Friday night had seen them slip to 17th spot.
Daniel Didavi struck a brilliant, left-footed shot from 30 yards which forced Freiburg goalkeeper Oliver Baumann into an important save after 15 minutes.
Stuttgart appealed for a spot-kick on 27 minutes when Ibrahima Traore, who will join Borussia Monchengladbach in the summer, claimed he was tugged back on his run into the box, but the referee felt there was no offence committed by Gelson Fernandes and allowed play to continue.
The match hinged on Huub Stevens' second-half introduction of Timo Werner and Romanian attacker Maxim, who brought extra quality in the last third.
But Stevens was also grateful to goalkeeper Sven Ulreich, who made four saves of the highest standard within two minutes.
First, he saved from Matthias Ginter's header a few yards out, then he denied both Felix Klaus and Admir Mehmedi from inside his penalty box.
It was a thrilling final 30 minutes as Stuttgart's 19-year-old attacker Werner struck the crossbar with a super volley after lovely chest control under pressure from Ginter.
And they eventually took the lead 21 minutes from the end, after Maxim started a great passing move involving wide-man Traore. He turned on his turbo-charge acceleration to assist the midfielder, who tapped into an empty net.
The second goal was the killer for Freiburg, whose fate was sealed when Harnik headed home at the back post on 89 minutes from Maxim's set-piece.