Zimbabwe 30 for 4 (Morkel 3-20) trail South Africa 309 for 9 dec (Markram 125, de Villiers 53, Jarvis 3-57, Mpofu 3-58) by 279 runs
Four wickets fell for the addition of 251 runs in the first two sessions. Nine wickets fell in the third session, for the addition of 88 runs. Under clear blue skies, St George's Park was close to being a batting paradise. Under lights, it turned into a seaming monster. It's hard to say if this was fair and balanced Test cricket, but it provided rich entertainment for the Boxing Day crowd, especially those cheering the home side.
At the end of it all, Zimbabwe were stuttering at 30 for 4 in reply to South Africa's 309 for 9 declared. This being a four-day Test - the first since February 1973 - Zimbabwe will need to get to 160, rather than 110, to avoid the follow-on.
South Africa's heroes on this bizarre and breathless day's cricket were Aiden Markram, who made his second century in only his fourth Test innings and held an otherwise profligate batting line-up together in the first two sessions, and Morne Morkel, who took three wickets and looked utterly unplayable in the 16 overs Zimbabwe faced before stumps.
There was seam and there was bounce, and Morkel nipped one in to trap Hamilton Masakadza lbw off the first ball of the innings. Then he nicked off Chamu Chibhabha and Brendan Taylor to end the day with figures of 3 for 20 in seven overs. Vernon Philander, giving absolutely nothing away, had Craig Ervine lbw - the ball pitching on leg stump and straightening to give him the tightest of umpire's-call decisions - and ended with 6-3-5-1. In just over an hour of batting, Zimbabwe went from elation to despondency, and may have wondered if they - like Don Bradman's Australians at the MCG in 1936-37 - should have sent their lower order in first.
South Africa's line-up hadn't had a great time under lights either. From a solid 272 for 4, they lost five wickets for 37 runs in seven overs before AB de Villiers, deputising for Faf du Plessis who is sitting out this Test with a viral infection, declared.
When the post-dinner session began, South Africa were 251 for 4. It was a situation of seeming security, but they had lost Markram, who made his second Test century, off the last ball of the second session, and had Nos. 5 and 6 at the crease.
Till that point, Markram had been the only South African batsman dismissed by a genuine wicket-taking delivery, Kyle Jarvis getting one to straighten in the channel and finding the edge after forcing the batsman to play.
The other three wickets had all been soft dismissals. All three had something to do with the slowness of the St. George's Park surface, but also with unwise strokes; Dean Elgar, who had moved attractively to 31, flicked Jarvis uppishly; Hashim Amla failed to keep down a back-foot slash; and de Villiers drove early to offer a return catch to Chris Mpofu.
And so it was that South Africa began the post-dinner session four down. Only 14.3 overs remained until the new ball would become available, and they would have hoped Temba Bavuma and Quinton de Kock would survive until that point. As it happened, their entire innings didn't get that far.
Jarvis sent back Bavuma with a delivery not dissimilar to the one that dismissed Markram, before Graeme Cremer picked up a pair of quick lbws to send back Vernon Philander and de Kock. Kagiso Rabada was run out going for a needless second run, before Mpofu had Keshav Maharaj caught at gully to prompt the declaration.
When Zimbabwe came out to bat, de Villiers wore the wicketkeeping gloves, with de Kock off the field with a hamstring injury sustained while running between the wickets.
Until Jarvis sent him back with arguably the ball of the day, Zimbabwe had struggled to find a way past Markram. He punished anything he could cut or pull, and looked particularly impregnable in defence when the ball was on off stump or straighter. He was seldom tied down by good-length balls on or around off stump, getting off strike frequently by working the ball wide of mid-on, and anything remotely on his legs ran away to the leg-side boundary.
A wider line tested him occasionally, his natural inclination to feel ball on bat leading him to play at deliveries other batsmen may have left, but such indiscretions were few and far between. On one occasion, Zimbabwe wasted a review when Blessing Muzarabani, the stick-thin, 2m-tall debutant, beat his outside edge.
Zimbabwe made poor use of their second review as well, failing to spot a de Villiers inside-edge onto pad, and so, when they had an actual case to review a not-out decision against Markram on 70 - Chamu Chibhabha struck him just inside the line of off stump and ball-tracking suggested the ball would have gone on to hit the top of middle - they had none left.
By that point, Markram and de Villiers had turned a position of relative parity at tea into one of South African dominance. De Villiers, playing his first Test since January 2016, looked like he had never gone away, playing with freedom and stroking the ball to all parts. He announced his arrival with a straight drive off Mpofu, which arrowed between the non-striker and the umpire, and gave Zimbabwe plenty to worry about with a series of boundaries off the back foot - the pick of them a pull for six off a slower ball from Jarvis - early in the second session.
Soon after passing 50, however, de Villiers became the third South African to fall to an avoidable shot. Yet again, South Africa had shown Zimbabwe a chink of light when they should have slammed the door shut on them.