India set up a World Twenty20 final against Sri Lanka on Sunday after Virat Kohli's unbeaten 72 secured a six-wicket victory over South Africa in the second semi-final.
Kohli's innings took just 44 balls as his side reached their victory target of 173 with five balls to spare.
Earlier, captain Faf du Plessis celebrated his return with a sparkling 58 and JP Duminy made a brisk 45 not out to help South Africa to 172 for four.
India made a bright and breezy start but then decided to preserve their wickets for a late assault after losing the openers, a ploy that ultimately paid off.
After opener Ajinkya Rahane (32) perished trying to accelerate, the in-form Kohli again proved why he is considered India's batting mainstay. He shunned risk and milked the South African attack with ease to take India home.
Opting to bat first, South Africa lost both openers while reaching 44 in the sixth over before Du Plessis, who missed Saturday's group match against England due to a slow over-rate suspension, added 71 runs with Duminy in 8.4 overs.
Even after the skipper departed, Duminy played aggressively, hitting three sixes and a four in his 40-ball knock.
Off-spinner Ravichandran Ashwin was the pick of the Indian bowlers, giving away 22 runs in four tidy overs and claiming the wickets of Hashim Amla (22), Du Plessis and the dangerous AB de Villiers (10).
India won the inaugural World Twenty20 in 2007.