The home side's only try was scored by Deon Fourie deep in the second half, with the reliable boot of fullback Joe Pietersen kicking them to victory. Wimpie van der Walt crossed the line late on for the visitors.
The Stormers moved level on 38 points with the Sharks, 14 points ahead of the last-placed Kings with three matches remaining.
The Port Elizabeth side needed a win to have a realistic chance of avoiding the wooden spoon and now face a play-off for Super Rugby survival next season against the Johannesburg-based Lions later in the year.
The Stormers kept alive their faint hopes of reaching this year's play-offs, but it seems more likely they will miss out for the first time since 2009.
"It was tough conditions, we are happy with the result, but it was not a great game," Stormers captain Jean de Villiers told a TV interview.
"I thought we were in control most of the game, it got a bit loose towards the end. This Kings team are very competitive, they keep playing for 80 minutes and they showed that again today."
The Kings suffered a major blow prior to kick-off when flyhalf Demetri Catrakilis was forced to withdraw with a knee injury. As it turned out it was a match that would have suited the kicking skills of the number 10.
Torrential rain all day in Cape Town made conditions underfoot difficult, and that saw both sides keep the ball at close quarters in the opening minutes.
But having taken a 6-0 lead with two Pietersen penalties, the home side began to play a more expansive game, with de Villiers especially looking to open things up.
But the Kings defence, which at times this season has been porous, held firm in the face of the Stormers' onslaught and they went into the halftime break just three points behind after a George Whitehead penalty.
Pietersen extended the home side's advantage by another three points early in the second half before centre Ronnie Cooke was inches away from the opening try for the Kings as the ball eluded his fingertips in the in-goal area as he chased a kick.
The first try of the match arrived with 17 minutes remaining, as Fourie, usually a hooker but playing as a flanker, mauled the ball over the line in the corner.
The Kings scored a carbon-copy at the other end with five minutes remaining as Van der Walt pushed his way over, but Whitehead missed the conversion that would have given the visitors a bonus point.
"People can question our ability and the talent we have, but we will never allow them to question our character, that has been something that has stuck with the side all season and tonight I thought the boys showed that again," Kings skipper Andries Strauss said.