South Africa needed less than a run a ball over the last four overs before a late collapse saw India claim the title.
Both sides head into the final undefeated.
India will face South Africa for the title.
The Proteas will meet the winners between India and champions England.
The rain-affected match against Bangladesh could have seen any of the three teams progress.
The Indians are safely in the semis, but Australia must now pin their hopes on Bangladesh.
The English are on track for the semi-finals.
The Aussies lost their unbeaten record at the tournament.
The Indians have clinched their second 'Super Eight' victory.