Quinton de Kock hit 103 as South Africa made 270-7 after electing to bat in the third one-day international against India in Rajkot on Sunday.
The 22-year-old opener-wicketkeeper took advantage of a flat pitch to notch up his seventh one-day century — the fourth against India — with the help of 11 boundaries and a six.
The five-match series is locked 1-1 after South Africa won the opening game in Kanpur by five runs and India drew level at Indore with a 22-run victory.
Faf du Plessis (60) shared a third-wicket stand of 118 with de Kock to lift the tourists to 205-2 in the 39th over when India hit back with three quick wickets to make it 210-5 in the 41st.
Du Plessis, who was caught off a Mohit Sharma no-ball when on 16, was dismissed by the same bowler to a catch at third-man, triggering the slide.
De Kock was run out in the 40th over after a misunderstanding with his skipper AB de Villiers, who was himself given leg-before in left-arm spinner Axar Patel’s next over.
Farhaan Behardien smashed a last-ball six off Bhuvneshwar Kumar to return unbeaten on 33.
David Miller, promoted to open the innings with de Kock, scored 33 in a first-wicket partnership of 72 to give the Proteas a sound start, but the Indians kept the run-rate under check.
The Proteas retained the same team for the third successive match, while India brought in leg-spinner Amit Mishra in place of fast bowler Umesh Yadav.
The one-day series will be followed by four Test matches.