Joe Root hit his second successive century for England but again finished on the losing side after an astonishing assault by South African all-rounder Chris Morris squared the series at the Wanderers Stadium on Friday.
South Africa won the fourth one-day international by one wicket to set up a series decider in Cape Town on Sunday.
Man-of-the-match Morris, dropped on 14 when South Africa were eight down and still 52 runs short of victory, slammed 62 off 38 balls.
Adil Rashid, the man who dropped Morris -- a straightforward chance at mid-off from the bowling of Reece Topley -- was brought on to bowl with the scores level and bowled Morris with a googly.
But last man Imran Tahir punched the next ball square for the winning boundary.
England captain Eoin Morgan rued three dropped catches -- JP Duminy and AB de Villiers were dropped before Morris's escape -- and some missed run-out opportunities, but praised Root and the England bowlers.
"At the halfway stage it was South Africa's game to lose," said Morgan.
"We pegged it back with some great bowling but we had chances in the field and that's disappointing."
That the match went so deep seemed unlikely when England were floundering at 108 for six after being sent in to bat.
But Root made 109 and steered England to a total of 262.
"We had an opportunity to bowl them out for 150 but we thought 260 was very chaseable," said de Villiers. "We didn't need a nine-downer but what a fantastic game."
Batting at number eight, Chris Woakes scored 33 and helped Root put on 95 for the seventh wicket.
Woakes followed up by bowling Faf du Plessis and running out de Villiers, South Africa's star batsman, with a superb piece of fielding off his own bowling.
Stuart Broad was brought in to strengthen what had proved an ineffectual bowling attack in Centurion and bowled Centurion century-maker Hashim Amla for nought in the first over of the South African innings.
The rest of Broad's match was less successful, although he had de Villiers dropped on nine off the first ball of his second spell, with Jason Roy diving far to his right but failing to hold on to a fiercely-struck cut.
De Villiers immediately went on the attack, hitting Broad's next two balls for four and six.
He hurried to 36 off 27 balls and was threatening to swing the match back in South Africa's favour when Duminy pushed a ball from Woakes to leg and called for a quick single.
Woakes reacted instantly, getting to the ball quickly and hitting the stumps at the batsman's end with an underarm throw.
Broad was brought back late in the match but was hit for 6, 4, 4 by a rampant Morris.
No South African batsman was able to score more than Farhaan Behardien's 38 until Morris took full advantage of his let-off, hitting three sixes and four fours.
"Luckily they dropped me and I thought, this is a chance to play cricket for your country, when it's in your arc you can hit it," said Morris.
Leg-spinner Tahir took three wickets in seven balls to spark an England collapse after Root and Alex Hales (50) had taken the tourists to 87 for one.
Seamer Abbott followed up with two wickets in successive overs to plunge England into disarray.
Root, who made a career-best 125 in a losing cause at Centurion, reached his eighth one-day international century off 119 balls and faced a total of 124 deliveries, hitting 10 fours and a six.
Hales made his fourth half-century in as many innings before he was caught on the midwicket boundary off Tahir after putting on 69 for the second wicket with Root.
Adil Rashid hit a rapid 39 off 26 balls before he was last man out.
Kagiso Rabada took four for 45, while Tahir claimed three for 46. It was the first time in the series that a team was bowled out.