All-rounder Albie Morkel marked his return to the South Africa team after 18 months with bowling figures of 3-12 as the hosts were skittled for 92 in the 18th over, their lowest after being bundled out for 74 against Australia in Melbourne in 2008.
The match suffered a delay of close to an hour after fans, angry about the performance of the home team, started hurling plastic bottles on to the ground.
Supporters at the sold-out Barabati Stadium threw bottles during the change of innings and again when South Africa were batting, forcing the players off with the visitors 70 for three in 13.2 overs and closing in on victory.
The match resumed after police cleared an upper stand of the stadium and South Africa returned to complete their win on the first delivery of the 18th over with the fall of another wicket.
Earlier, South Africa won the toss and opted to field first and, although India got off to a decent start, the visitors reined them in with some hostile but accurate bowling.
Rohit Sharma, the centurion from the last match at Dharamsala, and India’s test captain Virat Kohli were run out to some brilliant ground fielding by South Africa which compounded the hosts’ batting woes.
Morkel, added to the squad in place of paceman David Wiese who suffered a fractured hand, was the only change for South Africa for Monday’s match and the 34-year-old celebrated the occasion with his career-best bowling figures.
He was ably supported by paceman Chris Morris and leg-spinner Imran Tahir, who took two wickets each for South Africa.
Off-spinner Ravichandran Ashwin picked up three wickets to give India hope of an unlikely victory but the target was too easy for South Africa to chase down despite the early hiccups.
The third and final T20 match will be played in Kolkata’s Eden Gardens on Thursday.
(Writing by Sudipto Ganguly in Mumbai; editing by Ken Ferris)