India captain Virat Kohli has continued his excellent recent form by smashing a sparkling unbeaten century to lead his side to a comprehensive 124-run victory over South Africa in the third one-day international at Newlands.
Kohli made 160 not out from 159 balls as India, who had been put into bat, posted 6-303 in their 50 overs, before restricting their hosts to 179 all out to take a 3-0 lead in the series.
South Africa's brittle batting line-up, without injured stalwarts Faf du Plessis, AB de Villiers and Quinton de Kock, were stifled once more by the Indian spinners as Kuldeep Yadav, who took career-best figures of 4-23 from nine overs, and Yuzvendra Chahal (4-46) strangled their innings.
The fourth match will be played at the Wanderers in Johannesburg on Saturday.
The imperious Kohli now has four centuries in his last six 50-over innings. He survived being given out lbw to Kagiso Rabada before he had scored when a review showed he had got the faintest of edges to the ball.
After that he was sublime as he put on 139 for the second wicket with Shikhar Dhawan (76 from 63 balls) to lay the platform for India.
"You're always looking for someone to bat until the end and it's amazing if you do it as the captain," Kohli said.
"I was cramping towards the end but I knew I had to stay until the end to get us to 300. These are the times you're tested mentally as well as physically."
When South Africa captain Aiden Markram (32) and top-scorer JP Duminy (51) put on a rapid 78 for the second wicket, the hosts were given hope.
Yet the introduction of Chahal and Yadav pegged the innings back.
Yadav had Markram stumped by MS Dhoni and Chahal ripped through the middle-order, including the wicket of debutant Heinrich Klaasen (six).
Dhoni's stumping of Markram took him to 400 ODI dismissals, the first Indian wicketkeeper to reach that mark.
"Everything is disappointing about this. Yet again we were not up to the mark. We've only got ourselves to blame, we have to try harder," Markram said.
"We've come across them (the spinners) before and if after all that time we're still struggling to pick them, it speaks of their quality."
Qantas tour of South Africa
Australia squad: Steve Smith (c), David Warner (vc), Cameron Bancroft, Jackson Bird, Pat Cummins, Peter Handscomb, Josh Hazlewood, Jon Holland, Usman Khawaja, Nathan Lyon, Mitchell Marsh, Shaun Marsh, Tim Paine, Jhye Richardson, Mitchell Starc.
Warm-up match v SA Invitational XI, Sahara Park, Benoni, Feb 22-24
First Test Kingsmead, Durban, March 1-5
Second Test St George's Park, Port Elizabeth, March 9-13
Third Test Newlands, Cape Town, March 22-26
Fourth Test Wanderers, Johannesburg, March 30-April 3