South Africa 304 for 5 (Amla 109, de Villiers 75, Mendis 3-61) beat Sri Lanka 229 (Sangakkara 88, Tahir 3-50) by 75 runs
Scorecard and ball-by-ball details

What a difference a year makes. Rewind to the July 2013 series between these two sides: South Africa could not manage a single total over 300 or one centurion in the five ODIs they played, and their lack of a wicket-taking spinner was exposed so dearly that they only managed to bowl the hosts out once. Fast-forward to the July 2014 rubber and South Africa ticked all those boxes in the first match.

Hashim Amla anchored the innings with a hard-fought hundred and had a 151-run partnership with AB de Villiers. The pair set their team up for a final assault, which David Miller provided. Miller led the late charge and South Africa scored 53 runs in the final five overs to post their highest total in Sri Lanka, leaving with hosts with the challenge of scoring the highest second-innings total at the Premadasa.

Despite a speedy start and a sparkling 88 from Kumar Sangakkara, Sri Lanka lost their last five wickets for 13 runs and were left to rue the tactical mistakes they made in the first half of the match. They put down de Villiers on 17 and Amla on 49, which cost them, but Angelo Mathews seemed overly reliant on the notion South Africa would struggle against spin. He held his seamers back to his own detriment.

Lasith Malinga bowled just seven of his 10 overs - though he went for 7.42 per over - while Nuwan Kulasekera and Angelo Mathews, who conceded 4.33 and 5.00, only bowled six overs each. Sachithra Senanayake and Ajantha Mendis bowled out and took four wickets between them, but the 11 overs from Ashan Priyanjan and Tillakaratne Dilshan cost Sri Lanka 78 runs.

Amla and de Villiers, who faced the bulk of the balls, are accomplished players of spin and were largely untroubled. They came together in the 14th over, after Amla had got some measure of the surface and steered South Africa to a safe start despite losing both his opening partner Quinton de Kock and Jacques Kallis.

Kallis will be South Africa's only concern. After being declared fully fit following an upper back problem that kept him out of the warm-up match, Kallis was out for a second-ball duck when he failed to read Mendis' carrom ball. He did not bowl, so his impact on the game was negligible.

That did not matter to Amla and de Villiers as they built steadily. After their respective let-offs, one of which allowed Amla to get to fifty, they called for the batting Powerplay and scored 34 runs in the five-over period. That was where Sri Lanka allowed the game to slip. Mathews did not look to strike, though it was evident he also could not contain.

It took a moment of fortune for the hosts to find a way back when de Villiers hit Mendis to long-off, but they could not rein South Africa in as much as they would have wanted. Amla hung around to reach his hundred - the 13th of his career and second against Sri Lanka - before Miller aided by Ryan McLaren took the total past 300.

For all the talk of a slow surface, Sri Lanka's brisk beginning banished any concerns it would hold them up. Kusal Perera enjoyed the pace of Dale Steyn and cashed in on a poor line from Vernon Philander to take Sri Lanka past 50 inside eight overs. He picked out Morne Morkel at short fine leg to give Philander a wicket but with Sangakkara next in, South Africa's relief was short lived. He was off the mark with a straight drive for four, an ominous sign of what was to come, but it would only come later.

Sangakkara slowed down and took his time to settle in, while Dilshan kept the innings moving. He treated Imran Tahir with disdain - not hard to do given the full tosses the legspinner was dishing up. It seemed South Africa's premier spin option would unravel, but smart captaincy ensured he did not.

De Villiers took Tahir off after two overs and brought on the quicks to deal with Dilshan. Morkel had him caught behind and by the time Tahir was reintroduced, the scoring rate had cooled. With the first ball of his second spell, Tahir had Mahela Jayawardene caught behind and his confidence swelled.

In his next over, Tahir lured Ashan Priyanjan forward and the outside edge was caught at short third man. Sri Lanka reached the halfway stage needing 165 runs to win but with Sangakkara at the crease, that did not seem impossible.

Despite Angelo Mathews giving his wicket away, Sangakkara ushered Lahiru Thirimanne through a tricky period and kept up with the required run-rate with one eye on the looming clouds. Sangakarra announced his intent to get within the Duckworth-Lewis score with three successive fours off McLaren, who lost his line as he came under attack.

Thirimanne should have simply held up his end but he tried to emulate Sangakkara and target McLaren. He was bowled while trying to hit across the line and his dismissal exposed the Sri Lankan tail. McLaren also had Sangakkara's scalp when the batsman skied one to extra cover, with the hosts 88 away from the target. Tahir and Steyn cleaned up the tail, and Sri Lanka had been dismissed in 40.3 overs.

Firdose Moonda is ESPNcricinfo's South Africa correspondent