Playing in his first ODI in two years, Steyn top-scored with a career-best 60 in a South African total of 198, then took the first two wickets as Zimbabwe were bowled out for 78, giving South Africa a winning 2-0 lead in the three-match series.
Leg-spinner Imran Tahir took six for 24, including a hat-trick, as Zimbabwe collapsed.
Steyn's batting rescued South Africa from a precarious 101 for seven but it was his fast bowling that probably impressed coach Ottis Gibson the most.
He bowled with plenty of pace and his figures of two for 19 in six overs scarcely reflected the problems he caused for the Zimbabwe batsmen on a pitch of uneven bounce.
Steyn said a stint with English county Hampshire had enabled him to start the South African season in good form.
"I've been playing cricket and I feel cricket-fit," he said.
"The wicket was quite tough but it was nice that the opening bowlers had bowled out quite a lot of overs," he said of a 75-run eighth wicket stand with Andile Phehlukwayo (28).
Steyn hit eight fours and a six in an 85-ball innings. His previous best one-day international score was 35 against India in Jaipur in 2009/10.
Steyn struck with his seventh ball when he trapped Solomon Mire leg before wicket and followed up by dismissing Craig Ervine, who endured a torrid time against the veteran fast bowler before being caught at short midwicket.
"I had a nice breeze behind me and there was pace in the wicket. The wicket was a little up and down. If you run in on a wicket like that things will happen," he said.
Tahir ripped through the Zimbabwe batting when the fast bowlers were rested, trapping Brendan Taylor leg before in his first over, then dismissing Sean Williams, Elton Chigumbura and Peter Moor with successive deliveries before wrapping up the innings.
"The pitch wasn't ideal," said South African captain JP Duminy.
"The way Dale applied himself was exceptional and to see him bowling as quickly as he has is a really good sign for us."
Bloemfonteindale steynElton Chigumburaodionde day internationalSean WilliamsSouth Africasouth africa vs zimbabweZimbabwe
First Published: October 4, 2018, 1:24 AM IST