Quinton de Kock scored his third successive century and AB de Villiers top scored with 109 only for rain to play havoc with the third one-day international against India, which was eventually abandoned at Centurion.
- Related Content
Ishant Sharma also took four for 40 for the tourists but it was the stand of 171 from De Villiers and De Kock - who became the first wicket-keeper to score three consecutive hundreds in one-day cricket - that dominated.
It was the fulcrum of the South Africa innings of 301 for eight, but two and a half hours of persistent rain led the umpires to abandon the match at 8.10pm local time with no result.
The pair came together at the crease with South Africa wobbling at 28 for three, having lost three wickets for six runs.
Hashim Amla was first to go for 13 after he was caught by Yuvraj Singh off Mohammed Shami with the score on 22.
Six runs were added when Henry Davids got an outside edge to a length ball which went to second slip, where it was caught by Suresh Raina.
Davids had made just one and things were looking fraught for South Africa when JP Duminy went for a duck, also taken at second slip by Raina with the Proteas now 28 for three.
However, De Villiers and De Kock took the bull by the horns, moving the score swiftly along.
They had a reprieve though when De Kock was dropped on 37, Ajinkiya Rahane fluffing a regulation catch at short fine leg.
It was something they would come to regret as De Kock progressed to his third century of the ODI series with a single off Shami.
De Villiers fired two successive sixes off Shami before the stand was ended after they had made 171.
De Kock swung at and missed a Sharma delivery with the ball clipping the top of the leg stump to send the bails flying.
De Kock had made 101 off 120 balls including nine boundaries and two sixes and walked back to the pavilion greeted by a standing ovation.
David Miller joined De Villiers at the crease and he was on fire, claiming his century with a single off Yadav, reaching his ton off just 96 balls.
He had reached 109 when Umesh Yadav bowled a fuller delivery, the ball clipping the pads for an easy lbw decision.
De Villiers' innings had come off 101 balls and included six boundaries and five sixes.
Sharma then claimed his 100th ODI wicket when he removed Ryan McLaren for a duck, Yadav coming forward to claim the catch at deep midwicket.
Wayne Parnell was out for nine after miscuing a Shami delivery with Rohit taking it easily at deep square leg.
Vernon Philander was also out cheaply for nought when Shami's delivery landed on top of middle stump.
Miller ended the innings with two off Shami as the hosts reached 301 for eight but India's reply never got under way as the rain set in.