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.
Scorecard
South Africa Innings
M. van Wyk c N. McCullum b McClenaghan 16
H. Amla b Milne 124
R. Rossouw b McClenaghan 89
A. de Villiers c Latham b Milne 9
D. Miller c Milne b Neesham 14
F. Behardien run out (Ronchi, McClenaghan) 15
D. Wiese run out (, McClenaghan) 14
V. Philander not out 0
Extras (b-4 lb-4 w-15) 23
Total (for 7 wickets, 50 overs) 304
Fall of wickets: 1-46, 2-231, 3-252, 4-258, 5-286, 6-304, 7-304
Bowling
N. McCullum 5 - 0 - 29 - 0(w-1)
A. Milne 10 - 0 - 51 - 2(w-5)
M. McClenaghan 10 - 1 - 72 - 2(w-1)
J. Neesham 7 - 0 - 47 - 1(w-3)
I. Sodhi 10 - 1 - 55 - 0
G. Elliott 4 - 0 - 23 - 0(w-5)
C. Munro 4 - 0 - 19 - 0
New Zealand Innings
T. Latham lbw b Philander 60
L. Ronchi c Amla b Steyn 1
K. Williamson c sub b Tahir 47
M. Guptill c Miller b Wiese 25
G. Elliott c Miller b Philander 4
J. Neesham c van Wyk b Wiese 41
C. Munro lbw b Tahir 33
N. McCullum c Behardien b Rabada 10
A. Milne not out 15
M. McClenaghan b Steyn 16
I. Sodhi run out (Philander, Rabada) 0
Extras (b-5 lb-15 nb-2 w-10) 32
Total (all out, 48.1 overs) 284
Fall of wickets: 1-3, 2-107, 3-148, 4-156, 5-158, 6-229, 7-243, 8-251, 9-283
Bowling
D. Steyn 9 - 0 - 50 - 2(w-1)
V. Philander 10 - 1 - 51 - 2(w-3)
K. Rabada 9.1 - 0 - 49 - 1(nb-2 w-6)
I. Tahir 10 - 0 - 40 - 2
D. Wiese 7 - 0 - 63 - 2
F. Behardien 3 - 0 - 11 - 0
Image: Hashim Amla
Photograph: Duif du Toit/Gallo Images/Getty Images
Williamson to lead New Zealand on Africa tour
Amla, De Villiers lead SA to comfortable win over New Zealand
De Kock axed; Steyn, De Villiers recalled for New Zealand one-dayers
This South Africa spinner 'will pay money to play in IPL'
Why Sangakkara is among the best of his era