Dale Steyn scored his maiden ODI fifty and Imran Tahir bagged a hat-trick and a six-wicket haul as South Africa recorded a series-sealing, 120-run victory over Zimbabwe in the second ODI in Bloemfontein.
Steyn (60 off 85), playing his first ODI in two years, strode to the crease with the hosts reeling on 101-7 but shared an eighth-wicket stand of 75 with Andile Phehlukwayo (28) before nailing a 76-ball fifty with a six as the Proteas battled to 198 all out.
Zimbabwe crumbled to 78 all out in reply in 24 overs - their lowest ODI total against South Africa and ninth worst ever - with leg-spinner Tahir (6-24) having Sean Williams stumped, trapping Peter Moor lbw and bowling Brandon Mavuta from three consecutive balls across the 18th and 20th overs.
Tahir picked up three wickets in the 20th over, also bowling former Lancashire paceman Kyle Jarvis, en route to his third five-wicket haul in ODIs and fittingly claimed the final scalp of Tendai Chatara.
Steyn had made the early inroads while bowling quickly on an extremely fruity pitch, pinning Solomon Mire lbw and having Craig Ervine caught excellently by a diving Phehlukwayo at short midwicket.
Zimbabwe skipper Hamilton Masakadza, playing his 200th ODI, scored 27 up top but he fell two deliveries after Brendan Taylor (10) had departed as the away side collapsed from 43-2 to 64-9 as Tahir ran amok.
Donald Tiripano (12no) and Chatara delayed South Africa for four overs but Zimbabwe, who lost the series opener in Kimberley on Sunday by five wickets, fell to their 37th defeat in 39 completed ODIs against the Proteas when Chatara swiped Tahir to deep midwicket.
Watch the third and final ODI, in Paarl, live from 11.55am on Saturday on Sky Sports Cricket (channel 404).