A century from Hashim Amla laid the foundation for success as South Africa beat New Zealand by 20 runs to win their opening ODI at Centurion.
Amla displayed the form that had him rated the world's best batsman as he mastered the bowling on a slow track and scored 124 for South Africa to open with 304 for seven off their 50 overs.
New Zealand kept up with the required run-rate for most of their chase but lost wickets at key intervals and were bowled out for 284 in the 49th over of the first of a three-match series.
Amla scored his 21st ODI century off 126 balls and featured in a 185-run partnership for the second wicket with Rilee Rossouw, who tempered his usual aggressive style to build a steady innings before being bowled in the 42nd over for 89.
It proved a positive start after New Zealand had won the toss and sent the hosts into bat.
But a chance of a much bigger score, on the same pitch where they lost to New Zealand in a Twenty20 international on Sunday, disappeared as South Africa lost five wickets in their last eight overs.
South Africa made an immediate breakthrough on the New Zealand batting as Dale Steyn had Luke Ronchi caught behind at the end of the first over after seeing two earlier deliveries dropped.
New Zealand then set about chasing down the target with Tom Latham and captain Kane Williamson amassing 104 runs for the second wicket before a vital breakthrough as Williamson was caught at extra cover for 47 off spinner Imran Tahir.
Latham (60) was the fifth wicket to fall halfway to the target as he walked across his stumps to a straight ball and was caught leg before.
But the Kiwis kept up the pressure with fighting contributions from James Neesham (41) and Colin Munro (33), who might have been able to take their team past the target had they been more patient.
The second ODI is in Potchefstroom on Sunday.
South Africa 304-7 in 50 overs (Amla 124, Milne 2-51)
New Zealand 284 all out in 48.1 overs (Latham 60, Tahir 2-40)