South Africa reduced Zimbabwe to 30/4 at stumps on the first day of the four-day day/night Test as the hosts seized control of the game after declaring their first innings on 309/9.
Batting under lights with a swinging pink ball was always going to be a daunting task for the visitors against a quality bowling attack, and it proved to be true at a boisterous St Georges Park on Tuesday.
Morne Morkel was fiery as he removed Hamilton Masakadza, with the first ball of the innings, Chamu Chibhabha (6) and Brendan Taylor for a duck.
Vernon Philander then got into the act, trapping Craig Ervine (4) in front with Zimbabwe now facing a tough ask to stay in the game.
Debutant Ryan Burl (15 not out) and nightwatchman Kyle Jarvis (4 not out) will try to stave off a rampant home team on day two.
Earlier, the Proteas lost their last six wickets for 58 runs as Zimbabwe restricted the hosts to 309/9 declared, with the home team deciding to bowl 16 overs before the close in favourable conditions.
Opening batsman Aiden Markram struck his second century in just his third Test and held the home team’s innings together with a solid 125 off 204 balls (14 fours and two sixes).
The 23-year-old showed all the makings of an experienced Test opener as he got through a tricky new ball spell with the pink ball.
Markram and Dean Elgar (31) put on 72 for the first wicket and looked largely untroubled until the latter clipped one to PJ Moor off the bowling of seamer Kyle Jarvis.
Chris Mpofu got the big wicket of Hashim Amla (5), caught at cover, as the Proteas slipped to 77/2 in the 25th over.
AB de Villiers, playing his first Test since Janury 2016 and standing-in as captain for the sick Faf du Plessis, then joined Markram at the crease and the duo put on 96 for the third wicket.
De Villers looked comfortable in the middle, hitting five fours and a six, before Mpofu struck again to remove the danger man caught and bowed for 53.
Temba Bavuma (44) then settled down with Markram, the pair adding 78 for the fourth wicket.
Markram lost his wicket on the stroke of the dinner interval, the Proteas going into break on 251/4.
The lights then took full effect, and with a moving pink ball, the Proteas lost their last five wickets for just 37 runs before De Villiers called time on the innings.
Jarvis and Mpofu both picked three wickets while leg-spinner and captain Graeme Cremer 2/66 in 18 overs.
A concern for the Proteas, ahead of the Test series against India that starts on 5 January, will be a hamstring strain suffered by Quinton de Kock while batting.
The gloveman will go for a scan on Wednesday and is unlikely to keep wicket on the second day with De Villiers taking the gloves in the final session.
By Nasri Alexander at St Georges Park