Dale Steyn and Dane Piedt claimed four wickets apiece for South Africa, but Zimbabwe defied the odds as they batted out the first day of the one-off Test to reach stumps on 248 for 9.
Top-ranked South Africa had been expected to rifle through ninth-ranked Zimbabwe after the hosts had won the toss and elected to bat, but came up against a determined side that was marshalled by captain Brendan Taylor's 93.
It was just the fourth time in eight attempts that Zimbabwe had passed 200 in their first innings of a Test against the Proteas -- an achievement that looked highly unlikely as Steyn and Piedt pounced in the first two sessions.
Fast bowler Steyn eased past West Indian great Malcolm Marshall on the list of Test cricket's leading wicket-takers, taking 4 for 45 to end the day on 379 scalps.
Meanwhile debutant Piedt became the 19th Test cricketer -- and just the first South African since Bert Vogler in 1906 -- to pick up a wicket with his very first delivery, which spun sharply to trap Mark Vermeulen lbw for 14.
“I wasn't expecting it to spin so much, but I did put a lot on it,” Piedt said.
“I've spoken to 'Hendo' (spin consultant Claude Henderson) over the years and we say that you should try to make a statement with your first delivery. I think I did that.”
Vermeulen's remarkable return to the Zimbabwe side had earlier been confirmed as he made a Test comeback almost eight years after burning down his country's cricket academy.
Off-spinner Piedt went on to claim two wickets in three balls during the afternoon session, dismissing Hamilton Masakadza for 45 and Regis Chakabva for a duck, on his way to figures of 4 for 90.
Sean Williams responded to that double blow with a counter-attacking 24 before he became Steyn's second wicket, which saw Zimbabwe slip to 120 for five.
However Taylor continued to prove equal to anything that South Africa's attack could throw at him, and found support from wicketkeeper-batsman Richmond Mutumbami and then the lower order as he scored freely either side of tea.
The 28-year-old threw away his chance of scoring a Test century against the world's best attack when he took Piedt on and was caught on the midwicket boundary.
That left Zimbabwe 220 for eight with more than 13 overs left in the day, but Tendai Chatara slapped a quick 22 before debutants Donald Tiripano and John Nyumbu saw the hosts to stumps.
“We've shown a lot of character today against the top attack in the world, and we can come back tomorrow and start again,” Taylor said.