Hashim Amla's classy hundred and a clinical bowling display led by leg-spinner Imran Tahir (4/27) powered South Africa to a comprehensive 96-run victory over Sri Lanka in a lop-sided Champions Trophy match.
Amla slammed 103 from 115 balls for his 25th ODI ton to guide South Africa to 299 for six after being sent into bat at the Oval and then the Proteas shot Sri Lanka out for 203 in 41.3 overs to win the group B match by a huge margin.
The 34-year-old opener became the fastest batsman to achieve the milestone of 25 ODI hundreds as he took 151 innings, which surpassed India's Virat Kohli (162 matches).
Chasing 300 for a win, Sri Lanka made a brisk start with Niroshan Dickwella (41) and Upul Tharanga (57) stitching 69 runs for the opening wicket. But the Protea bowlers came back strongly as they scalped wickets in quick succession after the first breakthrough.
Sri Lanka wasted a strong start and from 69 for no loss in the ninth over, they were reduced to 155 for 6 in the 30th over and by then the game was as good as over.
Tahir, who was introduced in the 18th over, was the main tormentor of the Lankan batsmen as he returned with brilliant figures of 4/27 from his 8.3 overs. Chris Morris chipped in with two wickets while and Morne Morkel and Kagiso Rabada taking a wicket each.
Captain A B de Villiers, who could not contribute much with the bat, was at his brilliant best while fielding as he effected a superb high catch (to dismiss Kusal Mendis) and a stunning run out (to dismiss Dinesh Chandimal).
Sri Lanka began the run chase with a lot of promise with Dickwella in fine touch, picking boundaries with ease. The scoring rate was more than eight an over before South Africa got rid of dangerman Dickwella in the ninth over as Morkel forced the batsman to slice a delivery high in the air for Wayne Parnell to take a simple catch.
Three overs later, de Villiers held on to a high catch at short mid wicket to dismiss Mendis (11) off the bowling of Morris.
Lanka were in a spot of bother but they were well ahead of the Proteas in terms of runs at that stage. But two wickets in the 18th over bowled by Tahir changed the complexion of the game.
De Villiers produced a top-class fielding to dismiss Chandimal (12) as his stunning diving throw hit the stumps before the batsman could regain his crease.
Tahir did his job three deliveries later as Chamara Kapugedera (0) returned to the dressing room without bothering the scorers.
Captain Tharanga stayed at the crease for some time before he was out in the 26th over and Asela Gunaratne (4) followed suit in the 30th over when Sri Lanka were 157 for 6 with 143 runs needed from 20 overs with just four wickets in hand.
Down the order, Kusal Perera (44 not out) gave some resistance but Sri Lanka lost wickets in a heap to be all out for 203 in 41.3 overs.
Earlier, run-machine Amla struck his 25th ODI century to guide South Africa to a challenging 299 for six.
During his 103-run knock, which ended in a run out, Amla shared a 145-run stand for the second wicket with Faf du Plessis, who hit a 70-ball 75.
Amla scored at a decent pace, taking 115 balls for his knock that featured only five fours and two sixes.
It was a slow start, though, for the Proteas after being asked to bat with Amla and Quinton De Kock (23) putting on just 44 in 12 overs.
The elegant left-hander nicked a full length ball off Pradeep in the slips.
Plessis was dropped on eight by Lasith Malinga off Nuwan Pradeep, setting the platform for the Prorteas' total.
Plessis pulled one from Pradeep but managed only a top- edge, which flew to the fast bowler towards long on and he grassed it. By that time, South Africa had 189 runs on the board, with enough overs left for the following batsmen to exploit.
However, the other batsmen did not really fire. Skipper AB de Villiers came a cropper, managing just four runs, and big-hitting David Miller (18) and Chris Morris (20), too, failed to get going.
Left-hander J P Duminy did his bit in propelling the side with his quick-fire 20-ball 38 with five fours and a hit over the ropes.