The tourists resumed at 30-4 on day two in reply to 309-9 declared and were forced to follow-on by AB de Villiers after collapsing to 68 all out - their fifth-lowest Test total - in Port Elizabeth, where Morne Morkel took 5-21.
Zimbabwe threatened to salvage some pride in their second innings, but folded from 75-1 to 121 all out to suffer an emphatic defeat in just five sessions of the lone Test.
Keshav Maharaj (5-59) exposed Zimbabwe's batting frailties by claiming his third five-wicket Test haul and Andile Phehlukwayo took 3-13 in the day-night match, which was being trialled over a shortened duration.
Emphatic! South Africa bowl Zimbabwe out for 121 in their second innings to win the Only #SAvZIM Test by an innings and 120 runs.https://t.co/jxyBuyufHVpic.twitter.com/73KU0HUNIi
— ICC (@ICC) December 27, 2017
Morkel's burst under the lights on day one gave the Proteas a firm grip on the Test and the paceman struck again early on the second day, removing Ryan Burl's off stump for 16 with a peach of a delivery which nipped in.
Hostile quick Morkel had a seventh five-wicket Test haul to his name when Sikandar Raza edged behind to De Villiers, wicketkeeper in the absence of hamstring injury victim Quinton de Kock, without scoring, reducing Zimbabwe to 36-6.
Kyle Jarvis (23) was the only other batsman to reach double figures, Kagiso Rabada and Phehlukwayo both taking 2-12 in a feeble Zimbabwe first innings which spanned only 30.1 overs.
Hamilton Masakadza took a blow on the elbow and retired hurt early in Zimbabwe's second innings after they were asked to bat again, but the South Africa attack was not as potent with the new ball.
Zimbabwe were 54 without loss when Rabada got the breakthrough, De Villiers taking the catch behind to remove Chamu Chibhabha (15), and Hashim Amla held a superb one-handed catch at first slip when Brendan Taylor (16) got an attempted sweep all wrong to give Maharaj a first wicket.
Phehlukwayo got in on the act by trapping Craig Ervine (23) leg before as Zimbabwe capitulated, losing eight wickets in only 12 overs in another almighty collapse.
Masakadza was able to return to the crease, but fell for 13 when De Villiers took his eighth catch in what was his first Test for almost two years after the opener nicked a delivery from Maharaj, who put Zimbabwe out of their misery by cleaning up Blessing Muzarabani.
Photo Getty Images. Caption: South Africa spinner Keshav Maharaj