India seamers Jasprit Bumrah and Mohammed Shami took three wickets each as the tourists bowled South Africa out for 191 to claim victory by 113 runs just after lunch on the fifth day of the first test at Centurion Park on Thursday.
South Africa had resumed on 94 for four chasing a venue record 305 for victory, but fell well short of their target on a spicy wicket that had plenty of assistance for the bowlers.
Dean Elgar (77) and Temba Bavuma (35 not out) gave them some hope in the morning session but India's vaunted pace attack used the conditions superbly and eventually eased their side to a comfortable win.
India achieved their victory despite the entire second day of the test being washed out due to rain and take a 1-0 lead in the three match series.
The second test will be played in Johannesburg from Jan. 3-7, with the third set for Cape Town from Jan. 11-15. India are seeking a first ever series win in South Africa.
The highest fourth innings score to win at Centurion Park is 251 for eight by England in 2000, an infamous test where both teams agreed to forfeit an innings after rain to force a result.
That showed the enormity of South Africa's task and in the end they failed to breach 200 in either of their innings, having been bowled out for 197 in the first and 191 in the second.
South Africa went along well in the first 10 overs of the day before Elgar was trapped leg before wicket by Bumrah (3-50).
It was a typically gritty effort from the home skipper, who had been given a life on 63 by Mohammed Shami when the seamer spilled a caught and bowled chance.
Quinton de Kock took the attack to the bowlers with a breezy 21 from 28 balls, but played onto his own stumps for the second time in the test, on this occasion off Mohammed Siraj (2-47).
It is a shot he will want to forget and he will play no further part in the series as he leaves the squad on paternity leave.
Wiaan Mulder (one) then did not last long, caught by wicket-keeper Rishabh Pant off Shami (3-63), and after the lunch interval it took India only two overs to pick up the final three wickets.Spinner Ravichandran Ashwin (2-18) finally found a way into the game as he picked up the last two batsmen to fall in consecutive balls.