The in-form Herschelle Gibbs [ Images ] had held South Africa's rain-interrupted innings together with his second century of the series as England dismissed the home side for 211 in 46.3 overs.
The touring side then struggled in the increasingly difficult conditions to seven for two under the lights before the rain returned.
England needed to win to try and salvage the seven-match series. South Africa, having won the last three matches, lead 3-1 with one game to go, at Centurion on Sunday.
"It would have been a lot more satisfying to have won, but we've earned it," South Africa captain Graeme Smith [ Images ] said.
The toss looked crucial and South Africa won it but they made heavy work of batting first. Gibbs's 118 proved crucial -- the next highest score was 27.
He had come in with the score on one for two in the fourth over after medium pacer Alex Wharf, in his first game of the series, removed Smith (one) and Jacques Kallis [ Images ] for a golden duck with consecutive deliveries.
But Gibbs, who faced 133 balls and hit 10 fours and a six for his 15th one-day century, rebuilt the innings, first with opener Adam Bacher (15) with a stand of 52 and another 61 with Ashwell Prince [ Images ].
There was another partnership of 55 with Mark Boucher [ Images ] before England took the last six wickets for 42. Wharf finished with three for 48 and Kabir Ali three for 44 but Darren Gough put on a masterclass with two for 14 off nine overs.
His dismissal of big-hitting Justin Kemp for a four-ball duck -- one of four in the innings -- looked critical. Kemp, a front-foot player who has destroyed England's bowling earlier in the series, heaved at a short ball and top-edged to Andrew Strauss at fine leg as three wickets fell for 11.
Gibbs, reduced to slogging after the rain delay, was eighth out in the 46th over, driving a delivery from Ali to Paul Collingwood [ Images ] on the long-on boundary. The South African has scored two centuries and two half-centuries in his last four innings.
The rain during the innings interrupted the South African innings for an hour and 45 minutes, cutting the game to 48 overs a side and ultimately causing England's total to be revised to 213 according to the Duckworth/Lewis system.
When England replied, Shaun Pollock [ Images ] and Makhaya Ntini [ Images ] found good movement in the increasingly damp conditions to remove Marcus Trescothick, caught at second slip off an attempted guide to third man, and Geraint Jones, off a miscued pull, before the rain returned.
"It's been an interesting series, we've gained experience and learnt a lot about new players," England captain Michael Vaughan [ Images ] said.