Kohli finished without a single international hundred for the second consecutive year.
The Indian captain scored 35 runs in the first innings and 18 in the second innings of the Centurion Test.
India defended 305 runs in the fourth innings of the Centurion Test where Jasprit Bumrah and Mohammed Shami picked three wickets each.
Shami was the pick of the Indian bowlers in the first Test as he took eight wickets (5/44 and 3/63) while Jasprit Bumrah picked five wickets (2/16 and 3/50) in the game.
KL Rahul was the player of the match for his magnificent hundred in the first innings that came under challenging conditions.
India lead the three-match Test series 1-0 and the second Test will be played at the Wanderers in Johannesburg followed by the third Test in Cape Town.