Opening batsman Avishka Fernando hit a sparkling century to help Sri Lanka post 300 for nine in the first one-day international against South Africa.
Fernando, who made 118, put on key partnerships including a 97-run fourth-wicket stand with Charith Asalanka, who scored 72, after the hosts elected to bat at the start of the three-match series in Colombo.
South African spinner Keshav Maharaj returned figures of 2-30 from his 10 overs to check Sri Lanka’s run rate in the middle overs.
Fernando, who put on 79 runs with Dhananjaya de Silva (44) for the third wicket, changed gears after raising his half-century and took the attack to the opposition with the left-handed Asalanka.
The 23-year-old reached his third ODI ton with a single, raising his bat and punching the air amid a standing ovation from the Sri Lankan dressing room.
Fernando finally fell to Tabraiz Shamsi’s left-arm wrist-spin, having hit 10 fours and two sixes in his 115-ball knock.
Kagiso Rabada got Asalanka caught behind after the batsman’s second ODI half-century in his sixth match. Rabada took two wickets.
Earlier Sri Lanka were off to a brisk start with Fernando and wicketkeeper-batsman Minod Bhanuka getting 57 runs for the opening wicket.
Aiden Markram bowled Bhanuka for 27 with his off spin while Maharaj sent back Bhanuka Rajapaksa for nought as two wickets fell in the space of five balls.
The limited-overs series, which also includes three Twenty20 matches, is being played behind closed doors due to the coronavirus pandemic.