Chasing England's formidable 318-8, De Kock made 135 and Amla 127 as South Africa reached 319-3 at SuperSport Park, the highest second innings score in one-dayers at the ground.De Kock made his second century of the series, and Amla nearly batted all the way through the innings to guide South Africa home.
Joe Root earlier made 125 for England, his best ODI score, but South Africa handled the pressure of a must-win game, and chasing 300-plus, to pull the series back to 2-1.
The fourth game is on Friday in Johannesburg.
India beats England in 3rd test, leads series 2-0