(CNN) -- Tillakaratne Dilshan scored a century and spinner Ajantha Mendis also starred as Sri Lanka defeated hosts South Africa in a rain-affected opening match of the ICC Champions Trophy at Centurion on Tuesday.

Opener Dilshan made 106 off only 92 deliveries as Sri Lanka compiled an imposing 319-8 in their 50 overs in the Group A clash.

Mendis then took three key wickets as South Africa collapsed from 90-1 to be 206-7 after 37.4 overs when storms halted play -- 56 runs short of their target under the Duckworth-Lewis method.

Sri Lanka made a poor start when veteran left-hander Sanath Jayasuriya for 10, trapped leg before wicket by Dale Steyn, but Dilshan and captain Kumar Sangakkara then put on 158 in 25 overs.

Sangakkara fell for 54 off 74 balls, caught and bowled by J.P. Duminy, and Dilshan went soon after having completed his third ton in his 164th one-day international, cutting a wide ball from Steyn to Albie Morkel at third man.

However, former skipper Mahela Jayawardene ensured that Sri Lanka did not lose their way.

He cracked 77 off only 61 deliveries, hitting eight boundaries and a six before being the fourth man out at 297 in the 46th over when he was caught at extra cover by Duminy off seamer Wayne Parnell.

The Proteas did well to restrict Sri Lanka from there on, as opening bowlers Parnell and Steyn both finished with three wickets.

Don't Miss

South Africa lost Hashim Amla for just two when he chopped a ball from Angelo Mathews onto his stumps, but captain Graeme Smith and No. 3 Jacques Kallis added 81 in just 11 overs to keep home hopes alive.

However, Mendis bamboozled Smith with his first ball, a legbreak which skidded on and hit the left-hander's leg stump -- abruptly ending a belligerent innings of 58 from just 44 balls, which featured nine boundaries and a six over square leg off Nuwan Kulasekara.

Key batsman Kallis moved on to a relatively more sedate 41 off 48 deliveries when Mendis struck again, as Mathews took a fine catch diving forward at mid-off to dismiss the all-rounder.

The 24-year-old Mendis was on a hat-trick after inducing a bemused Duminy into an inside edge onto his stumps first ball, but Mark Boucher squeezed a couple of runs to square leg to get off the mark straight away.

AB de Villiers was the fifth man to fall at 142 when he mistimed a pull off fast bowler Lasith Malinga high to Jayawardene at mid-wicket, ending his knock of 24 off 38 deliveries.

Mathews trapped Boucher lbw for a brisk 26 off 29 as the Proteas seemed to be regaining some momentum, and Johan Botha went for a similarly hard-hitting 21 off 20 at 198-7.

Botha became Malinga's second victim from the final ball of the 36th over, wastefully caught at mid-off by Mathews after 14 runs had been taken from the preceding five balls.

However, it all became academic as the weather whipped up and forced the players off the field with South Africa well short of their required run rate.

The hosts have the chance to bounce back in Thursday's clash with New Zealand, while Sri Lanka take on out-of-form England -- who come into the biennial tournament on the back of a 6-1 ODI series drubbing at home to Australia.

The opening Group A game is between Pakistan and the West Indies on Wednesday.

Then the Windies face Australia, while India's first game is against Pakistan, both on Saturday.

The tournament was supposed to be held in Pakistan last year, but several teams refused to travel there due to security reasons following terrorist attacks, so the tournament was subsequently awarded to South Africa.

All the matches will be in Johannesburg and nearby Centurion, which hosts the final on October 5.

The top two teams from each group will contest the semifinals on October 2-3.