Following a rain delay of several hours, which arrived when Sri Lanka were 75 for 2 after 16 overs, the visitors were posed with an incredibly challenging required rate upon resumption, needing 118 off 48 balls. With Kusal Perera out of commission due to a torn hamstring that will now rule him out of the series, Sri Lanka were unable to make a serious charge at the target. Kusal Mendis - who had looked in good touch before the rain break - mustered a couple of sixes off Tabraiz Shamsi after play resumed, but was outwitted by Imran Tahir soon after. No other batsman could hit a boundary after resumption, with Tahir taking another wicket to finish with figures of 2 for 19.
The result means that South Africa wrap up the ODI series, and have now won each of the last four bilateral series between these sides. Sri Lanka, meanwhile, are yet to win a one-dayer in 2019 in six attempts.
Earlier, apart from de Kock, every batsman who came to the middle made an important contribution for South Africa, apart from opener Reeza Hendricks who had been out for 4. The best of the middle-order innings, perhaps, belonged to Andile Phehlukwayo, who exploited some modest Sri Lanka death bowling to clobber 38 not out off 15 balls. Thanks to largely Phehlukwayo, South Africa plundered 53 off the last four overs.
Sri Lanka's fielding fell apart towards the end of South Africa's innings, but before that, it was their indiscipline with the ball that hurt them. Thisara Perera was wayward - his five overs costing 38 runs. Kasun Rajitha was even more expensive, his economy rate up at 8.62 from eight overs, even if he did get de Kock's wicket eventually. The best of their bowlers was perhaps debutant Kamindu Mendis - the ambidextrous 20-year-old allrounder - who delivers both offspin and left-arm ortherdox. One of his left-arm deliveries even brought him the wicket of Rassie van der Dussen - the only South Africa batsman to make a half-century apart from de Kock.
De Kock himelf had been fluent from the outset. The first delivery of the innings - a length ball on middle stump from Lasith Malinga - he clipped serenely through midwicket for four. Two balls later, a wider delivery he sent scorching past point.
Composed and hungry against the new ball, de Kock laid a platform and then embarked on a mini-rampage twelve overs in. He clubbed Akila Dananjaya down the ground for six, smoked two fours off Rajitha next over (bringing up his half-century with the first), before crashing Dhananjaya for another six and a four, then finally putting Thisara away for three successive boundaries - two of them in the fine-leg region. The salvo yielded him 39 runs in the space of 17 balls faced, and South Africa appeared to be headed towards a truly gargantuan score.
Sri Lanka managed to wrest back some control at this point - Malinga injecting himself into the attack and dismissing Faf du Plessis, while Dhananjaya also produced a couple of tight overs at the other end. But de Kock gritted his way through this period, and continued to advance single-mindedly towards that elusive triple-figure score. He got there in the 25th over - off the 89th delivery he faced - crashing Thisara past point. He had made six half-centuries - including 94, 81 and 83 in his three most-recent international innings - since his last ODI ton. The relief of finally achieving the milestone was writ across his face as he celebrated.
De Kock was eventually out edging a fuller, wide delivery from Rajitha, as he attempted a to sock the bowler over cover. But by this stage South Africa were 187 for 3 after 31 overs, and beautifully placed to push for a giant total. Van der Dussen accumulated smartly, hitting only three fours in his 50 off 67 balls. David Miller also produced a steady innings rather than a blockbusting one, making 41 not out off 46 deliveries.
Phehlukwayo, though, ensured the South Africa innings got a fast finish. He hit five fours, all of which came behind square, and also tonked Isuru Udana high into the grass banks beyond midwicket. He should have been caught in the final over, when he swung a ball high into the air on the legside, only for the converging fielders to mis-communicate, and leave the catch for each other. Miller had also been dropped in the previous over.
Sri Lanka began the chase of 332 poorly, with Niroshan Dickwella holing out to mid on for 2, in the third over. Asitha Fernando played a few attractive shots but was also caught at mid on, for 23 off 26. Oshada Fernando and Kusal Mendis seemed to be building a half-decent partnership when the rains came, but if a Sri Lanka victory seemed unlikely before the break, it was nearly impossible when play resumed - the required rate up near 15 an over. With Tahir's overs in reserve, South Africa were almost certain to win at that point.