Kohli, Bumrah lead India's fight but South Africa still ahead
South Africa 335 and 90 for 2 (De Villiers 50*, Elgar 36*, Bumrah 2-30) lead India 307 (Kohli 153, Morkel 4-60) by 118 runs
Scorecard and ball-by-ball details
Virat Kohli's 21st Test hundred and two early wickets from Jasprit Bumrah kept India's bid for a series-levelling win alive, but AB de Villiers' skill and enterprise ensured South Africa remained in control of the Centurion Test. Having secured a 28-run first-innings lead, South Africa were 90 for 2 when bad light ended play ten overs into the post-tea session, with de Villiers having just brought up a fluent half-century. Dean Elgar was at the other end, on an ungainly but undefeated 36.
A tendency for indifferent bounce had been apparent even on day two of this Test match, and it grew pronounced when South Africa began their second innings. Bumrah, with his hit-the-deck style and exaggerated angle into the right-hander, accentuated the effect of this low bounce, and by the sixth over of the innings had sent back Aiden Markram and Hashim Amla in near-identical fashion: both times, he pitched the ball short of a good length, got it to skid through at knee height, and jam into pad with the batsman in midair, their muscle memory conditioning them to expect far more bounce.
It left South Africa 3 for 2, effectively 31 for 2, and with R Ashwin - who took the new ball - continually threatening both edges of the left-handed Elgar at the other end, India were piling on the pressure. The situation called for a clear-headed batsman with supreme eye and technique, and South Africa happened to have one in de Villiers.
Putting the misbehaving pitch out of his mind, he batted with great clarity and put away all the loose and marginally loose balls India offered him - they usually erred on the full side, or fed him on his pads in the quest for lbw - to race away at close to a run a ball. By tea, he had moved to 33 off 42 balls.
The post-tea session was brief and stop-start, with a short, sharp shower sending the players off the field for an hour, and the light turning murky 5.1 overs after resumption. In between, India missed a chance to send Elgar back on 29, when Bumrah, returning for his second spell, found his edge with extra bounce in the corridor. The ball flew a couple of feet to the left of the wicketkeeper Parthiv Patel, and he remained unmoved, despite Cheteshwar Pujara standing unusually wide at first slip.
Starting the day trailing by 152, India's last five wickets added 124 before Kohli was last man out in the eighth over after lunch, chipping Morne Morkel to long-on in a bid to score quick runs with only the No. 11 Bumrah for company.
The bulk of India's runs came in a rollicking seventh-wicket partnership between Kohli and Ashwin. The two came together after Hardik Pandya lost his wicket in a moment of carelessness in the seventh over of the day, and added 71 at close to five an over to put the pressure back on South Africa. The second new ball broke the partnership four overs before lunch, and the last three wickets added a further 26 runs before Kohli's dismissal.
Pandya began the day looking comfortable against the pace of Lungi Ngidi and then Kagiso Rabada from one end and the swing of Vernon Philander, bowling with the keeper up to the stumps, at the other. With Kohli quickly moving from his overnight 85 to bring up his 21st Test hundred in the sixth over of the day, the sixth-wicket partnership was beginning to worry South Africa when they were gifted a wicket out of the blue.
Sent back by Kohli after he pushed one to mid-on, Pandya was run out by a direct hit - he was past the crease when the throw hit the stumps, but he was in midair, having failed to ground either his bat or his feet. At that point, India were still trailing by 126.
In walked Ashwin. South Africa had targeted his body in Cape Town as well, and Rabada had greeted him to the crease by hitting him on the index finger of his right hand. This time, Rabada smacked his left glove off the third ball he faced, and followed up with another bouncer.
Ashwin's response was to go after Rabada in his next over, whenever he pitched anything remotely in his half of the pitch. Three fours flew through the off side, all off shots hit on the up, and Ashwin was suddenly batting on 22. An edge in Rabada's next over fell just short of the diving AB de Villiers at gully - the decision went up to the third umpire - and India could breathe again.
With Rabada losing his radar somewhat in an all-out search for wickets, he ended up conceding 40 in a seven-over spell. There was a low full-toss, which Kohli clipped away to the midwicket boundary, and a short, wide one that Ashwin cut for another four. Boundaries came off the other bowlers too, the pick of them a sweetly-timed chip over mid-off by Ashwin off Keshav Maharaj's left-arm spin.
South Africa took the second new ball at the start of the 82nd over, and Kohli, correctly guessing that Philander's first ball would be a fullish outswinger, sashayed forward and drove it to the cover boundary. He would play a similar shot in Philander's next over too, but by then India had lost two more wickets; Ashwin drove away from his body and nicked a Philander outswinger to second slip, and Mohammed Shami edged a steeply bouncing Morne Morkel delivery to first slip.
Ishant Sharma added 25 with Kohli before Morkel sent him back with a perfectly directed bouncer from round the wicket. With two balls left in the over, Jasprit Bumrah ducked awkwardly into a short ball, which ricocheted off the shoulder of his bat and into the grille of his helmet, and only just managed to keep another lifter off his ribcage.
Kohli had already been farming the strike with Ishant for company, and had brought up 150 with a fierce pull to the midwicket boundary off Morkel. Given how uncomfortable Bumrah was now looking, Kohli had to expand his risk-taking, and an attempted loft off Morkel brought his and India's innings to a close.
Karthik Krishnaswamy is a senior sub-editor at ESPNcricinfo