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.
South Africa again opted for a four-pronged pace attack, picking new cap Lungi Ngidi in place of the injured Dale Steyn.
The conditions encouraged Kohli to play like he would at home, taking a big stride forward to good-length balls and drive them on the up through the covers. Ishant Sharma having bowled 22 overs, bowled the most overs among the Indian pacers.
The Indian openers took the score to 28 before losing their first wicket when Lokesh Rahul (10) was caught and bowled by Morne Morkel (1-24), misjudging a delivery that held up on the surface.
In conditions perfectly suited to his game, impetuousness or nerves had cost Pujara a massive opportunity to score some runs.
India was hoping for a quicker end to South Africa's first innings after three quick wickets at the end of the first day had the home team wobbling on 269-6 at stumps. Ishant Sharma picked two wickets on day 2 of the match.
After Keshav Maharaj (18) was out when he edged Mohammed Shami to wicketkeeper Parthiv Patel, the 100th wicket in test cricket for the seamer, India contrived to drop three catches in two balls. He pushed Rabada back with a quicker one, and turned it away from the left-hander.
India made two other changes. Then he charged out of his crease, slogged, and miscued one high over the point region.
Hardik Pandya was put off by an onrushing Shami from short third-man though and spilled the effort onto the latter, who also had a bite at the ball before it dropped to the floor. Soon after, du Plessis appeared to edge Ashwin while looking to defend him off the back foot and the ball clanged off Parthiv's gloves.
South Africa profited with what could be crucial first innings runs through this period, before Rabada was superbly caught by, ironically, Pandya at deep mid-wicket as he attempted a hook off the excellent Ishant Sharma (3-46).