The Indians rode on skipper Virat Kohli's unbeaten 160 to post a total of 303/6 in their allotted 50 overs.
Kohli's 160* is now the highest score by an Indian in ODIs in South Africa. The previous highest was 152 by Sachin Tendulkar against Namibia at Pietermaritzburg.
India now lead the six-match series 3-0.
This is the first-ever instance of South Africa trailing 0-3 after the first three ODIs of a bilateral series at home.
Images: AP, BCCI
Inputs: IANS, SIFY