LIVE: Zimbabwe v South Africa
Amla batted through the innings to finish unbeaten on 122 from 132 balls, and shared century stands with fellow opener Quinton de Kock and No 3 Faf du Plessis.
The early starts in Zimbabwean one-day internationals traditionally give plenty of assistance to the side bowling first and the game began under cloudy skies, but the home side's young attack was unable to capitalise on those conditions.
Seamer Neville Madziva and 19-year-old all-rounder Luke Jongwe were both handed international debuts by the hosts, and both struggled against an aggressive De Kock.
The left-hander went to his half-century in just 42 balls despite a watchful start, but a mishit off the bowling of off-spinner John Nyumbu, who was making his one-day debut, saw him depart for 63.
The dismissal prompted a period of slower scoring as Faf du Plessis bedded in and Zimbabwe's spinners dragged the game back.
However, the batting Powerplay sparked the South African innings once more as Du Plessis and Amla took 40 runs from the five overs.
Although Du Plessis sliced a Nyumbu delivery to extra cover to depart for 59 soon after, Amla went to his hundred in 120 balls while AB de Villiers and JP Duminy scored quick late runs.
Amla finished with three sixes and six fours in his innings, while Duminy hit the final ball of the innings for six to score 22 not out from just 11 deliveries.Teams:
Elton Chigumbura (captain), Richmond Mutumbami (wicketkeeper), Vusi Sibanda, Hamilton Masakadza, Brendan Taylor, Sean Williams, Luke Jongwe, Shingi Masakadza, Neville Madziva, Prosper Utseya, John Nyumbu
AB de Villiers (captain), Hashim Amla, Quinton de Kock (wicketkeeper), Faf du Plessis, JP Duminy, David Miller, Ryan McLaren, Wayne Parnell, Kyle Abbott, Aaron Phangiso, Imran Tahir
Match Referee: Roshan Mahanama (Sri Lanka)
Standing Umpires: Chris Gaffaney (New Zealand) & Russell Tiffin (Zimbabwe)Third Umpire: Jeremiah Matibiri (Zimbabwe)Fourth Umpire: Chris Phiri (Zimbabwe)