Springboks captain Jean de Villiers' try early in the second half was the decisive play in a grinding match at a windy and rainy Newlands, helping end the Stormers' own three-match losing run and leaving the Reds five points behind the Brumbies at the top of the Australian conference.
De Villiers was set free on the left wing after a cross-kick from flyhalf Elton Jantjies in a planned move near halfway, and the centre eventually ran away for the only try of the game.
Cooper kicked five second-half penalties, but Stormers fullback Joe Pietersen matched that in a relieving win for the struggling Cape Town team.
In his first match since being left out of an initial Wallabies squad for the British and Irish Lions series, Cooper couldn't spark the Reds backline despite a few trademark defense-splitting passes and half-breaks. His kicking did keep the Reds in touch and pushed them ahead for the first time in the game with 10 minutes to go.
Pietersen added two of his five penalty shots in the last 10, and the Reds failed in a long and desperate attack in the last possession of the game that only ended - following nearly five minutes after the hooter sounded - when the Stormers won a penalty while defending grimly near their line.
The 11th-place Stormers' victory was for pride more than anything, but successive losses to the Cheetahs in Bloemfontein and now in Cape Town leave the Reds with a gap to make up on the Brumbies. They are fifth but fellow playoff chasers the Crusaders and Blues of New Zealand are three points behind and have played two games fewer.
Pietersen's penalty right on half-time was the first points following missed kicks at goal by himself and Cooper in the first 40 in strong winds. Neither team had enough invention to open up the other's defence.
The only breakthrough was in the 44th, when Jantjies' weighted kick was collected by Bryan Habana, who passed inside for Pietersen to go clear. He fed De Villiers, who was steaming up on his outside, for the try.
The Reds clawed it back and led 15-14 when Cooper landed from in front in the 69th, but the desperate Stormers responded stubbornly and Pietersen succeeded with a low, wobbly kick in the 71st and a longer-range effort in the 77th.
That spurred the Reds into a final thrust for the try needed for victory and a final attack that ended with Stormers hooker Tiaan Liebenberg winning a penalty at a ruck in front of the posts and being mobbed by his teammates for the match-clinching play.