In seam-friendly conditions, the Proteas were put in to bat and were immediately put on the back foot by three quick wickets between Arshdeep Singh and Harshit Rana.
Rana was in the side for the absent Jasprit Bumrah, who missed out for personal reasons, and made the most of his opportunity.
Aiden Markram led a marginal fightback and gave South Africa a bit of hope with a well-played 61 off 46 balls coming in at three.
However, the only other players to get above 10 runs were Donocan Ferreira (20 off 15 balls) and Anrich Nortje (12 off 12 balls) as the Proteas were skittled for 117 in their 20 overs.
Singh, Kuldeep Radav and Varun Chakravarthy were the picks of the bowlers with figures of 2-13, 2-12 and 2-11 off their four overs, respectively, while Rana also picked up two wickets but was relatively expensive in conceding 34 runs.
India never really looked to be in trouble in their response, with Abhishek Sharma (35 off 18 balls) and Shubman Gill (28 off 28 balls) putting on 60 for the opening wicket before Sharma was caught off the bowling of Corbin Bosch.
Tilak Varma played an uncharacteristically watchful innings for a T20I, scoring 26 off 34 balls but it was exactly what India needed chasing a low total.
Suryakumar Yadav (12 off 11 balls) and Shivam Dube (10 off four balls) also chipped in with a few runs as the hosts cruised to a seven-wicket win with 4.1 overs to spare.
Lungi Ngidi (1-23) and Marco Jansen (1-24) also picked up wickets for the Proteas but they were not able to defend the low total set by the batting unit.