Imran Tahir's four wickets and a superb Hashim Amla century helped South Africa to a 96-run victory over a spirited Sri Lanka side in their Champions Trophy Group B game at The Oval.
South Africa were sluggish at the start of each innings - the 32 runs from their opening 10 overs when batting first in stark contrast to Sri Lanka's explosive 10-over opening of 87-1 in reply.
And while Amla's perfectly paced 103 off 115 balls - his 25th ton in ODI cricket - helped the Proteas to post 299-6, that total looked in trouble when Sri Lankan openers Niroshan Dickwella (41 off 33 balls) and Upul Tharanga (57 off 69) both fired.
But Tahir's introduction into the attack changed the game - as did a couple of bits of AB de Villiers brilliance in the field - as the legspinner took 4-27 to help bowl Sri Lanka out for 203 inside 41.3 overs.
At 94-1 in the 12th over, De Villiers' leaping grab at midwicket to claim Kusal Mendis (11) off the bowling of Chris Morris (2-32) triggered a Sri Lankan collapse of five wickets for 61 runs which included the strikes of Dinesh Chandimal (12) and Chamara Kapugedera (0) in the same over, Tahir's first.
Tahir trapped Kapugedera lbw with a wrong'un, winning a battle of bluff having just brought a slip in for the one that turns away, while earlier in the over a De Villiers direct hit off an initial misfield did for Chandimal.
Kusal Perera played nicely for an unbeaten 44, but the rest of the Sri Lankan batting order fell away thereafter, with Tahir continuing to have an impact including affecting a run-out himself - a direct hit dismissing Suranga Lakmal for nought - and taking the final wicket to seal an opening win for South Africa.
Earlier, after winning the toss and electing to bowl, a disciplined Sri Lankan attack restricted the Proteas early on, with it taking them till the seventh over to score their first boundary.
The only thing lacking from their strong start with the ball were wickets, and though one finally arrived in the 13th - Nuwan Pradeep (2-54) picking up Quinton de Kock (23) caught behind off a beautiful delivery that just nipped away off the seam - further breakthroughs were hard to come by.
Lasith Malinga put down Faf du Plessis (75) at long leg when on eight, with it proving to be a costly drop as he went through to 28th ODI fifty, sharing in a 145-run stand for the second wicket with Amla - the pair particularly punishing when the Sri Lankan seamers came out of the attack, targeting spin.
Legspinner Seekkuge Prasanna proved particularly profligate, conceding 72 runs from his 10 overs, though he did earn the important strike of De Villiers, as the South African skipper fell for just four, a mere over after Du Plessis' departure.
It was Pradeep who accounted for Du Plessis, although he had Chandimal to thank for his fine diving grab to his right at midwicket, while De Villiers rather tamely departed to a top-edged pull.
The dismissals were symptomatic of a dozy 10-over spell for South Africa between the 33 and 43-over mark where they lost four wickets for 51 runs just when they should have been upping the scoring rate and looking for a score of well over 300.
Amla did reach his hundred in this period, but David Miller (18) departed later in the same Lakmal (1-51) over, lifting a leading edge down to third man, and Amla was then run out in the next.
JP Duminy (38no off 20) and Chris Morris (20) helped restore South Africa's advantage somewhat with a handy 45-run partnership before the latter was dismissed by Tharanga, the Sri Lanka skipper throwing down the stumps with a direct hit to typify his team's spirited effort in the field.
That momentum carried through to Sri Lanka's start with the bat, Tharanga notching a 32nd ODI half century, while Dickwella cracked five fours and a six in an enterprising cameo.
Kagiso Rabada and Wayne Parnell were particularly wayward with the new ball, and a first bowling change brought an immediate reward as Morne Morkel (1-31), with his second ball, dismissed Dickwella off a slice drive down to third man.
Sri Lanka never truly recovered following that opening wicket and they ultimately slipped to their eighth consecutive ODI defeat to South Africa.
The Proteas next play on Wednesday when facing Pakistan in a day-night match at Edgbaston, while Sri Lanka play a day later against India at The Oval.
The live ICC Champions Trophy coverage continues on Sky Sports 2 HD on Sunday, with the much-anticipated Group B game between India and Pakistan. Tune in from 10am to see all the action.