Tamim Iqbal (70) and Mushfiqur Rahim (61) put on 123 for the third wicket but both fell to part-time off-spinner Kedar Jadhav (two for 22) when well set.
It needed some late-order hitting from Bangladesh captain Mashrafe Mortaza (30 not out) to take his side past 250 but the Tigers appeared to have fallen short of a really testing total given India's powerful batting line-up.
The winners of this match will play Pakistan, who thrashed tournament hosts England by eight wickets in Cardiff on Wednesday, in Sunday's final at The Oval in London.