The Proteas, the top-ranked team in the tournament, won the toss and put their neighbours in to bat on a greenish pitch.
Morne Morkel was instantly among the wickets, before Jacques Kallis polished off any resistance with figures of four for 15, limiting Zimbabwe to 93 for eight from their 20 overs.
In reply, Richard Levi made an unbeaten 50 from 43 balls, while Hashim Amla knocked the winning runs with more than seven overs to spare.
The result means that whatever the result of Sri Lanka v South Africa's clash on Saturday both sides will progress to the second group stage.
Both captains wanted to bowl first, and Zimbabwe skipper Brendan Taylor looked disappointed to be put in to bat. He welcomed Ray Price back into the side, while South Africa sprung a surprise by picking batsman Farhan Behardien, who did not feature once on the recent tour to England, for just his second T20 international.
Zimbabwe found it almost impossible to score runs against the pace of Morkel and Dale Steyn, with Morkel picking up Vusi Sibanda and Taylor's wickets quickly before his brother Albie accounted for Hamilton Masakadza and left Zimbabwe at 11 for three.
Craig Ervine was the only batsman to offer any meaningful resistance, forming a partnership worth 35 with Stuart Matsikenyeri (11), making marginally better progress against the spin of Robin Peterson and Johan Botha.
But Kallis's introduction removed the fight from the Zimbabwe line-up - he began with a double-wicket maiden, then added the wickets of Graeme Cremer and Ervine, who fell for a innings worth 37 which spared his side's blushes.
Zimbabwe never looked as if they had enough to defend, and despite shuffling through six different bowlers, they made no progress against the Proteas' opening pair.
They came closest to taking a wicket when Sibanda shelled a chance to catch Amla at point off the bowling of Kyle Jarvis. But by that point South Africa only needed a handful of runs, and the game was long gone.
- Morne Morkel
- Jacques Kallis