After a first half that produced only three points at windy Newlands, a brilliant try by the veteran lifted a game between South African and Australian sides with very different agendas.
Flyhalf Elton Jantjies launched the move on 44 minutes with a cross-field kick that found left wing Bryan Habana, and he passed inside to Joe Pietersen.
The full-back surged forward before unleashing De Villiers on the outside and the centre darted over for a try which Pietersen failed to convert in difficult goal-kicking conditions.
Pietersen and Reds flyhalf Quade Cooper then traded penalties - finishing with five goals each - in a match that ended with the home team desperately defending the try-line.
The Reds were awarded a last-minute scrum that had to be reset twice before the Brisbane outfit launched a slow, multi-phase effort to score the converted try that would have brought victory.
Progress was painfully slow, punctuated by a tap penalty, and lasted four minutes before Stormers hooker Tiaan Liebenberg won a turnover and Jantjies ended the game with a kick to touch.
Victory was a huge relief for the Stormers, who started the season among the title favourites but began this match just six points above Southern Kings in a race to avoid a relegation play-off.
The win stretched that gap to 10 points and the Stormers have home advantage over the Port Elizabeth-based Kings next weekend in a potentially decisive fixture for both teams.
Defeat completed a dismal two-match tour for the Reds, who gained only a losing bonus point in Cape Town after coming away empty-handed from the Cheetahs last weekend.
They remain fifth - in a play-off position - but hopes of overtaking Australian conference leaders Brumbies were dealt a big blow as they have only two games left and are five points adrift.
It took 40 minutes and 40 seconds before the scoreboard operator was needed as Pietersen atoned for an early miss by slotting a close-range penalty after Liebenberg was stopped just short.
As the battle of the boot unfolded, the Stormers stayed ahead until 11 minutes from time when the fifth success by Cooper gave his team a 15-14 advantage.
But
Pietersen kept his nerve to kick two more penalties and ended a
three-match losing streak by the Stormers on a disastrous tour of
Australasia.
Teams:
15. Joe Pietersen, 14. Gio Aplon, 13. Jean de Villiers (captain), 12. Damian de Allende, 11. Bryan Habana, 10. Elton Jantjies, 9. Louis Schreuder, 8. Nizaam Carr, 7. Don Armand, 6. Siya Kolisi, 5. Eben Etzebeth, 4. Gerbrandt Grobler, 3. Brok Harris, 2. Tiaan Liebenberg, 1. Steven Kitshoff
Substitutes: 16. Martin Bezuidenhout, 17. Chris Heiberg, 18. Marius Coetzer, 19. Rohan Kitshoff, 20. Dewaldt Duvenage, 21. Gary van Aswegen, 22. Gerhard van den Heever
Reds:
15. Jonathan Lance, 14. Rod Davies, 13. Chris Feauai-Sautia, 12. Anthony Faingaa, 11. Luke Morahan, 10. Quade Cooper, 9. Will Genia, 8. Radike Samo, 7. Liam Gill, 6. Jake Schatz, 5. James Horwill (captain), 4. Rob Simmons, 3. James Slipper, 2. Saia Faingaa, 1. Greg Holmes
Substitutes: 16. James Hanson, 17. Ben Daley, 18. Ed O`Donoghue, 19. Ed Quirk, 20. Beau Robinson, 21. Ben Lucas, 22. Ben Tapuai