South Africa were dismissed for 215 in 72.3 overs in their second innings, pacers Zaheer Khan (3 for 57) and S Sreesanth (3 for 54) claiming three wickets each.
Ashwell Prince was left stranded on 39 from 108 balls after Lonwabo Tsotsobe (0) was the final wicket to fall; he was run-out by a sharp piece of fielding from Cheteshwar Pujara at short leg.
VVS Laxman also played a decisive role in India's victory, scoring a fluent 96 from 171 balls, the only half-century of the match to guide India to a respectable 228 in their second innings, on a pitch offering a lot of help to the pacers.
South Africa were dismissed for a paltry 131 in 37.2 overs in their first innings, after India had folded for 205 in 65.1 overs, as 18 wickets fell on day two of the Test.
Kallis wicket was the turning point of the end result. The Kerela speedster came up with a blinder of a delivery that bounced sharply on to Kallis from just short of length and the big man had no other option but to fend at it, only to glove it to Virender Sehwag at gully. Kallis made 17 off 52 deliveries and hit two boundaries in the process.
It turned out to be an extraordinary Test with fortune fluctuating from one team to the other but the Indians eventually tilted the balance in their favour on a bouncy Kingsmead track which saw 40 wickets fall in three and half days.
The Indians, who had lost the first Test at Centurion by an innings and 25 runs, showed great character and resilience to demolish the Proteas in their own den and in conditions tailor-made to suit the home team.
It was India's second Test triumph in South Africa. The 123-run victory in the first Test at Johannesburg in 2006 was their first Test victory on South African soil.
The two teams will now travel to Cape Town for the third and final Test starting on Sunday.
Laxman was adjusted Man of the Match in the end. He again rise as a saviour for India.