Avishka Fernando's third ODI century set Sri Lanka on course for a 14-run win in the opener of their three-match series against South Africa.

The Proteas were always fighting a losing battle in Colombo after allowing Sri Lanka to make 300-9 – their highest total in 50-over cricket in 2021.

Avishka (118) was the star with the bat, putting on 79 in a partnership with Dhananjaya de Silva (44) that was disrupted briefly by a rain delay, with better to come as he was joined in the middle by Charith Asalanka (72).

That stand of 97 for the fourth wicket put Sri Lanka in command, as a bowling attack led by Kagiso Rabada (2-66) struggled to keep them in check.

South Africa were no more than steady in reply and keenly felt the dismissal of Aiden Markram to an outstanding Wanindu Hasaranga catch after 96 runs, including four sixes.

Captain Temba Bavuma had already retired hurt after taking a blow to his hand, and Rassie van der Dussen's departure preceded some superb death bowling to see Sri Lanka comfortably over the line – the Proteas short of their target on 286-6.

Profitable partnership

With the exception of Keshav Maharaj, who gave up 30 runs in 10 overs for his most economical ODI return, South Africa's bowlers were really poor. But Avishka and Asalanka still had to capitalise and did exactly that with a vital partnership that scored at 8.19 an over.

Denied at the death

South Africa required 41 off 25 when Van der Dussen departed, yet they mustered only two more boundaries – both fours from Rabada in the final over when the chase was up. Hasaranga started well and finished strongly, too, slowing Heinrich Klaasen in giving up just three from the 47th over.