Nyumbu sank to his knees and pointed to the heavens after taking figures of five for 157 in a South African total of 397 all out, which gave the tourist a lead of 141 on first innings.
Morne Morkel then dismissed opener Hamilton Masakadza before Zimbabwe reached stumps on 28 for one in its second innings, still trailing by 113 runs.
Only fast bowler Andy Blignaut had taken five wickets on Test debut for Zimbabwe, but Nyumbu chipped away throughout the day to add the scalps of Faf du Plessis, Dale Steyn and J-P. Duminy to the two wickets he had picked up on Sunday.
du Plessis misses out
du Plessis was out for 98 shortly before the lunch interval after a 264-ball innings, ending a 119-run stand with Quinton de Kock.
de Kock also missed out on a century when he chipped left-arm spinner Sean Williams to midwicket to depart for 81, having showed the most intent of the South Africans.