i© Getty Images
The Proteas, who won the toss and elected to bat, lost an early wicket when Quinton de Kock was dismissed for six after four deliveries, but Faf du Plessis and Hashim Amla managed to steady the attack.
Amla (22) was the next to fall, but South Africa surpassed 50 runs after eight overs with captain Du Plessis and Jean-Paul Duminey.
The Proteas increased their run-rate by reaching 129-4 following 15.3 overs and eventually gave India a chase of 173 with Duminy (45 not out) and David Miller (23 not out) giving their side a late surge of runs.
Ravichandran Ashwin starred for India in the bowling stats with figures of 3-22 from four overs, with Amla and Du Plessis (58) included in his wickets.
Imran Tahir eventually found the breakthrough for South Africa when he dismissed Singh, who hit two boundaries in his knock of 18 from 17 deliveries.
However, Kohli (72 not out) and Suresh Raina (21) contributed towards the end of the innings to secure their place in the final.