Reigning world champions India got their Champions Trophy campaign off to an ideal start as Shikhar Dhawan's maiden one-day international century helped them to a 26-run victory over Group B rivals South Africa in Cardiff.
Dhawan's fluent innings of 114 was backed up by valuable contributions from Rohit Sharma (65) and Ravindra Jadeja (47) as India made 331 for seven after being put in by AB de Villiers.
South Africa's reply, in pursuit of the highest ODI score recorded at the Cardiff Wales Stadium, started at a furious pace, but the removals of De Villiers and Robin Peterson, for 70 and 68 respectively, effectively ended their hopes.
They were eventually bowled out for 305 off the last ball of the innings, despite Ryan McLaren's brave 71 not out.
The Proteas lost Colin Ingram for six and Hashim Amla after a brisk 22 during a frenetic start to their chase, leaving them 31 for two off just 3.5 overs.
Peterson and De Villiers continued in an aggressive fashion and put together a 50 partnership off 40 balls as South Africa raced to 77 for two from 10.
The pair both passed 50, but Peterson, having survived one major scare a few minutes earlier, was run out as Jadeja's agile stop once again caught him way out of his ground with the score on 155, ending the 124-run stand with his captain.
India skipper Mahendra Singh Dhoni's tactic of employing spin from both ends with Jadeja - who returned 2-31 - and Ravichandran Ashwin soon stymied the flow of runs and dropped the rate below the required figure.
The pressure told as first JP Duminy went lbw to Jadeja for 14, wasting South Africa's sole review in the process, before De Villiers lost his composure to end a fine knock; top-edging as he charged a Umesh Yadav bouncer to give Jadeja a simple catch.
David Miller went moments later without facing as he and Faf du Plessis contrived to produce a farcical run out to make the score 187 for six.
McLaren and Du Plessis attempted a recovery, smashing a 50 partnership off just 28 balls, but when the latter went for 30 - lofting a regulation catch to Suresh Raina off Ishant Sharma - there were still 94 needed with three wickets left, and they came up short.
Earlier in the day, Dhawan produced a sparkling maiden ODI century after India were put in by De Villiers.
South Africa were without the injured Dale Steyn, and lost Morne Morkel to a thigh strain after 6.5 overs of the seamer’s allocation.
India took full advantage; Sharma and Dhawan moved the score to 100 in the 20th over with relatively few problems and both batsmen reached their half-centuries shortly afterwards.
The pair's stand was eventually broken in the 22nd over with the score on 127; Peterson taking the catch off the bowling of McLaren to dismiss Sharma, one of three wickets for the all-rounder claimed at a cost of 70 runs.
Normal service was soon resumed as Dhawan upped the rate, hitting a massive six and a lofted four off Lonwabo Tsotsobe, before reaching his first ODI ton off just 80 balls.
The left-hander should have gone next ball, but De Villiers failed to gather a stumping chance off Duminy.
Tsotsobe picked up his first wicket as Amla caught Virat Kohli on the boundary for 31 before Dhawan eventually fell, substitute fielder Aaron Phangiso taking a simple chance off Duminy's bowling.
Wickets tumbled late in the innings but Jadeja's hitting ensured South Africa had too much to do.