The fast bowlers restricted Zimbabwe to 228 all out, with only Sean Williams' 69 providing any sustained resistance.
Brendan Taylor made 40, but Steyn and Rabada kept the Zimbabweans under pressure and South Africa chased down the score with just over four overs to spare.
South Africa finished on 231-6 off 45.5 overs after a 75-run opening stand between Reeza Hendricks (66) and Aiden Markram (42), and a maiden ODI half-century by wicketkeeper-batsman Heinrich Klaasen (59).
South Africa captain Faf du Plessis contributed 26 in his first game back after a shoulder injury.
Steyn also made a successful return from injury, coming through two of the three games in the series after having been out of action in ODIs for two years because of shoulder and foot problems.