England, set a revised target of 137 to win off 20 overs after rain disrupted the South African innings of 183 for six in 32.1 overs, made it with 14 balls to spare with Kevin Pietersen making 40, and Owais Shah 44 not out.
Flintoff came in and smashed a rapid 31 off 12 deliveries to add to his three for 21 with the ball.
Pietersen was out with 44 still wanted but he and Shah had upped the tempo of England's run chase by hitting a Jacques Kallis over for 20.
The England captain eventually holed out in the deep after hitting five fours and a six before Flintoff came in and took the game away from South Africa and give England a 4-0 lead in the series.
In the gathering gloom Shah who started off slowly, paced his innings to perfection to get England home whilst Flintoff seemingly unaffected by the light hit the South African bowling to all parts.
Herschelle Gibbs, 34 and no longer in the Test side, showed he remains a force in one-day international cricket with his 36th one-day half century after South Africa were put into bat in gloomy conditions by Pietersen.
The opener was eyeing a 21st one-day century when he was bowled off his pads by Stuart Broad having faced 75 balls and hit five fours for his 74.
For England Andrew Flintoff took 3-21 from seven overs before rain interrupted the innings for a second time.
Gibbs and Hashim Amla put on 66 for the first wicket with Amla accelerating after the rain break when he tucked into Steve Harmison and took four fours of the quick bowler in one over.
At this stage the South Africans were going at more than six an over but Amla's innings was cut short when he was run out by Owais Shah. Pietersen's bowlers were not firing on all cylinders as they had at Trent Bridge when South Africa were bundled out for 83 and Harmison was taken out of the attack after conceding 35 runs in four overs but Flintoff was reliable as ever.
A 5-0 whitewash of the South Africans, the final match is in Cardiff on Wednesday, would take England to second in the ICC one-day world rankings behind Australia.