Published: 2017-03-17 15:34:00 BdST
De Kock was dismissed for 91 when he chased a wide Jimmy Neesham delivery and was caught behind to end the 160-run partnership with Bavuma that had rescued the Proteas following a rocky opening session.
Neesham then snapped up Bavuma for 89 in the deep off Neil Wagner after he and Vernon Philander, who ended the day on 36 not out, had taken the visitors past New Zealand's 268.
The hosts were again frustrated when last man Morne Morkel (31) dominated an unbroken 47-run partnership with Philander, and received a barrage of short deliveries for his troubles with one from Tim Southee striking him in the helmet.
After taking four wickets in the first session and reducing the Proteas to 94 for six just before lunch, New Zealand had high hopes of taking a significant first innings lead.
De Kock and Bavuma thwarted them in the afternoon session, however, unleashing a delightful array of cuts, pulls and drives to rack up 114 runs at more than four an over.
The Proteas had resumed the day on 24 for two and were immediately under pressure with nightwatchman Kagiso Rabada bowled by Southee for nine in the second over of the day.
Henry Nicholls, who scored his maiden Test century on Thursday, then took catches at midwicket to dismiss JP Duminy for 16 and Hashim Amla for 21.
While Duminy spooned the ball to Nicholls off left-arm quick Neil Wagner, the removal of Amla was much more difficult.
The right hander flicked a Colin de Grandhomme delivery off his pads in the direction of the fielder, who parried the ball above his head then reached out to grasp it with his left hand as he tumbled to the ground.
South Africa captain Faf du Plessis had flirted with disaster throughout his innings with several lofted shots before he gave seamer de Grandhomme his third wicket, caught behind for 22 about 10 minutes before lunch.