Faf du Plessis fell two runs short of a fourth test century as South Africa eased past Zimbabwe's first innings total by reaching 278 for five at lunch on the third day of the one-off match at Harare Sports Club on Monday.
Du Plessis battled for 264 balls for his 98 but lost his wicket 10 minutes before the interval as he turned a ball from off-spinner John Nyumbu straight into the hands of backward short-leg Regis Chakabva.
His dismissal brought an end to a fifth-wicket stand of 119 with wicketkeeper Quinton de Kock (75 not out) that lifted the Proteas out of a hole after they slipped to 157-4 following the tea interval on the second day in response to Zimbabwe's 256.
De Kock and JP Duminy (yet to score) will look to extend the 22-run advantage in the afternoon session on a wicket that remains difficult to score on.
After battling for runs on day two with the pitch slow and lacking in bounce, it was another ponderous start to the morning from the South Africans as they resumed on 201-4, but sparked into life in the hour before lunch.
De Kock was the more adventurous of the pair and brought up his maiden test half-century with a huge six back past Nyumbu, taking exactly 100 balls to reach the milestone.
Image: Faf du Plessis
Photograph: Duif du Toit/Gallo Images/Getty Images