Quinton de Kock scored a superlative century as South Africa kept their one-day series with England alive courtesy of a seven-wicket triumph at Centurion.
De Kock's 135 from 117 balls, the 10th ton of his ODI career and second in the series following an unbroken 138 in the opening game in Bloemfontein, saw the Proteas overhaul England's 318-8 with 22 balls remaining and shave the tourists' lead to 2-1 with two games to play in Johannesburg on Friday and Cape Town on Sunday.
Hashim Amla (127 from 130) posted his 22nd fifty-over hundred during a clinical opening stand of 239 with De Kock, the 32-year-old the third man to reach three figures at SuperSport Park after Joe Root's masterful 125 from 113 deliveries - the Yorkshireman's highest ODI total - earlier in the day.
Root shared a steady salvo of 125 with Alex Hales (65) and a boisterous partnership of 82 from 54 balls with Ben Stokes (53 from 37) after England were put into bat, but a spell of four wickets for 22 runs towards the death, triggered by Root's run out, stalled the visitors' progress.
Jason Roy (20 from 23) provided a brisk cameo up top, a staple of his series so far, cracking four boundaries before he was run out by Morne Morkel from third man attempting a second run in the sixth over.
Hales had flashed Kyle Abbott for two fours in the preceding over but showed the patience he displayed while scoring 99 in Port Elizabeth on Saturday early in his tandem with Root, with his only iffy moments coming when he attempted to play the cut shot.
Hales freed his arms in the 21st over, though, while striking successive fours off Imran Tahir, with Root smoking the first maximum of the match off the recalled David Wiese an over later as the pair secured their century stand from 107 balls.
Root was given a lifeline on 44 when De Kock shelled a sharp one-handed chance behind the stumps but Hales and Jos Buttler (0) were not so lucky in the 27th over, the former spiralling Kagiso Rabada (2-65) into the deep and the latter clipping the seamer to leg gully for a first-ball duck.
England skipper Eoin Morgan (8) chipped Wiese (1-64) to midwicket in the 34th over to end an ungainly 24-ball innings, leaving Stokes and the fluent Root to biff 82 for the fifth wicket, Root notching his seventh ODI ton in the process.
The century maker was run out by Wiese in the 43rd over having amassed 10 fours and five sixes and surpassed his previous best score of 121 against Sri Lanka at the 2015 World Cup, the 25-year-old and Stokes suffering a breakdown in communication as the ball ricocheted off the stumps at the non-striker's end.
Moeen Ali (3) then clocked Morkel (1-63) into the deep and Abbott (2-50) picked up the scalps of Stokes and Chris Jordan (3) in successive balls, though Adil Rashid (13no from 7) and David Willey (13no from 8) lifted the tourists above 300 by tonking a maximum apiece.
De Kock, though, helped render those exploits futile with a storming innings, showing his intent in the first over by creaming a pair of exquisite cover drives off Willey, two of 16 boundaries he would go on to collect.
The Johannesburg-born star also blasted four sixes before looping Rashid (1-45) to Root at mid-off in the 38th over, with Wiese (7), promoted up the order to No 3, joining him shortly after when bowled by Moeen (1-75).
But Amla, whose wristy effort contained 13 fours and two sixes, and Faf Du Plessis (33no) took South Africa close to victory with a stand of 62, before Du Plessis completed the highest successful run chase at Centurion, beating West Indies' 300-3 in 2004, after Amla clipped Jordan (1-54) behind.
Will South Africa square up the series in Johannesburg on Friday? Find out from 11am on Sky Sports 2. You can also follow all the action with our live blog.