Kohli has been the only constant in India's Test side since he took over from MS Dhoni in the middle of their series against Australia.
For large parts of Saturday (January 13), it looked like South Africa would walk in to stumps with plenty of smiles and wickets intact.
Markram was bang on the money when he had predicted the Centurion pitch on his home ground to yield a lot more runs than Newlands. Jasprit Bumrah's 18 overs were the second highest of the day, which spoke of how much load the offspinner had taken, having come on in the 20 over of the day.
South Africa won the toss and chose to bat first.
Before that passage of play, it was South Africa all the way. Nevertheless, his runs at the top set-up an excellent platform for South Africa to push towards a big total.
An ineffective bowling attack and a batting wicket is all former skipper Hashim Amla needed to roar back into form with a classy 82. Two more wickets fell in the next 14 balls.
Earlier Ashwin dismissed Markarm for 94 runs and Elgar for 31 runs.
Interestingly, having said that he was excited by the lively look of the wicket, Virat Kohli did raise his eyebrows when he saw that most of the grass had been shaved off. Rahane still didn't make the playing XI in place of Rohit Sharma but what surprised the seers was Bhuvneshwar Kumar being dropped for Ishant Sharma.
But the first two sessions was all about chase the leather for the Indian fielders as the South Africa batsmen made hay. Feet going nowhere, Rahul pushed well in front of his body at a full one and spooned back a return catch, while Pujara, haring out of his crease after clipping his first ball to the right of mid-on, was run-out by a brilliantly athletic pick-up and direct hit from the debutant Lungi Ngidi.
The openers were unseparated at lunch, but shortly after, Ashwin finally broke through Elgar's stubbornness, with the opener stepping out and pushing at the ball that Vijay latched on to, close in.
It got worse for South Africa when Vernon Philander set off for a suicidal run and found himself at the same end as Du Plessis to be run out without scoring.
Ashwin then removed Markram against the run of play with a delivery that did not turn as much as the South African opener had expected it to. In fact, it nearly seemed like his plan to play three pacers and a spinner backfired as there was hardly anything in the wicket for the Indian bowlers at least.
The all-rounder then completed the routine task of dislodging the bails to run out Philander after the South Africa seamer's brain-fade had left him and Du Plessis at the same end.
Two balls later, Quinton de Kock edged his first ball to slip, giving Ashwin his third wicket.