South Africa 232 for 2 (du Plessis 112*, de Kock 81) beat Sri Lanka 231 (Mendis 60, Oshada 49, Tahir 3-26, Ngidi 3-60) by eight wickets.
Faf du Plessis won the toss and sent in Sri Lanka to bat.
The decision looked to be the right one as Ngidi who was returning from injury accounted for both openers in his first two overs leaving Sri Lanka at 23-2.
Veteran batsman Kusal Perera and debutant Oshada Fernando soon started dominating the South African seamers before Perera was caught behind off the bowling of Imran Tahir.
Fernando was soon to follow on 49, run out after a mix up with Mendis. At 195-4 after 36 overs, Sri Lanka were looking at a projected score of 300+ but Imran Tahir dismissed the set batsman in quick succession leaving Sri Lanka 210-6.
Sri Lanka then lost their last five wickets for only 24 runs to reach 231 after 47 overs.
South African openers got to a shaky start, de Kock surviving an inside edge past leg stump and the dismissal of Hendricks in the second over.
Du Plessis was dropped by Sandakan at short third man which later proved to be a costly mistake. Du Plessis and de Kock both reached their half-centuries striking at just below a run a ball.
De Kock was the last wicket to fall trapped lbw by Akila Dananjaya. South Africa reaching the target with 11.2 overs remaining, du Plessis 112* and van der Dussen 32*.
Man of the Match: Faf du Plessis