India restricted South Africa to 280 for six in 49 overs despite the home team's openers Quinton de Kock (106) and Hashim Amla (100) putting up a 194-run stand in the second One-day International here Sunday.
India's recovery was led by pacer Mohammed Shami, who picked up three wickets conceding 48 runs in as many balls.
Ravichandran Ashwin and Ravindra Jadeja picked up a wicket apiece.
South Africa lead the three-match series 1-0.