The Proteas bowling attack took advantage of the conditions as fast bowler Kagiso Rabada led the way with four for 73.
Kohli, who missed out on last week’s Wanderers Test, stood tall for the world number one side with a calculated half-century, bringing it up off 158 balls, his slowest 50 in his career.
The Indian skipper shared a 61-run partnership with Cheteshwar Pujara (43) before the latter edged behind to Kyle Verreynne off all-rounder Marco Jansen.
Things stabilised for India somewhat with a 51-run partnership between Kohli and Rishabh Pant (27) before the wicket-keeper fell to Jansen, who took three for 55 off his 18 overs.
Kohli was soon running out of partners but remained resilient, top-scoring with 79 off 201 balls (with 12 fours and a six).
However, Rabada had the final hurrah as Kohli was the ninth wicket to fall when he edged behind to Verreynne with India all out for 223 soon after.
Rabada admitted, however, that it was a tough task bowling to the Indian skipper.
“He’s a brilliant player. You want to measure yourself against the best players in the world,” Rabada said.
But the speedster said that the Proteas had a plan in motion for capturing India’s star batsman.
“The plan was to bowl a good line and length. I was trying to get the ball to swing away and not really go for the pads. It was pretty obvious and that’s where he has been getting out,” Rabada told reporters.
“I think that’s why he was very patient in leaving balls and that’s why we tried to stick it.
“He batted extremely well and well done to him.”
Indian batting coach Vikram Rathour hailed Kohli’s phenomenal innings but believes that the visitors are 50 to 60 runs short.
“As a batting coach, I was never concerned (about his form). He was more disciplined today, he was really solid,” said Rathour after the day’s play.
“These are challenging conditions, not easy conditions to score runs in, but we are below par. We could have scored 50 to 60 more runs, that’s what we were at least expecting.
“The lesser the runs (they get), I hope it will be an equal innings and they won’t get a big lead.”
Image (Proteas fast bowler Kagiso Rabada earned his 50th Test cap against India in Cape Town on Tuesday).