Bangladesh made 264 for seven against title-holders India in their Champions Trophy semi-final after being sent into bat at Edgbaston on Thursday.
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. Kedar Jadhav proved India's surprise weapon with the ball as the title-holders restricted Bangladesh to 264 for seven in their Champions Trophy semi-final at Edgbaston on Thursday.
It appeared a minor success for Bangladesh when Jadhav came on in a match where frontline off-spinner Ravichandran Ashwin's first seven overs cost 42 runs.
But India captain Virat Kohli's move was rewarded as Bangladesh suffered a middle-order collapse.
It did not take long for India to make a breakthrough after Kohli won the toss and fielded under grey skies.
The very first over saw Soumya Sarkar fall for a second-ball duck when he played on attempting a booming drive off Bhuvneshwar Kumar.
At one for one, there were fears that Bangladesh, who collapsed to 84 all out in a 240-run warm-up thrashing by India last month, were poised for another top-order slump.
But new batsman Sabbir Rahman cover-drove his first ball, from Jasprit Bumrah, for four.
Sabbir hit four boundaries in his 19 but just as he was getting into top gear he cut Kumar straight to Ravindra Jadeja at point.
But from 46 for two, the experienced pair of Tamim and Mushfiqur rebuilt the innings.
Tamim, bowled off a Hardik Pandya no-ball on 17, was in fine touch.
The left-handed opener whipped Pandya over mid-wicket for six and his reverse-sweep four off left-arm spinner Jadeja saw him to a 62-ball fifty.
Tamim also struck three fours in as many balls off Ashwin -- a cut, a sweep and a nudge past fine leg.
This was Tamim's fourth fifty in his last five innings, but he gave his wicket away when bowled trying to sweep Jadhav.
Mushfiqur again showed his class with the bat in a 61-ball fifty.
But when, to his evident dismay, the wicket-keeper hit a Jadhab full toss to Kohli at mid-wicket, Bangladesh were 179 for five in the 36th over.
By this stage they had also lost Shakib Al Hasan, whose 114 and Bangladesh record stand of 224 with Mahmudullah (102 not out) had seen the Tigers recover from a top-order collapse to beat New Zealand last time out.
Shakib (15) was well caught by wicket-keeper MS Dhoni after bottom-edging a cut off Jadeja.
Bumrah then stuck twice in quick succession as he caught and bowled Mosaddek Hossain and yorked Mahmudullah (21) to reduce Bangladesh to 229 for seven off 45 overs.
But some late-order hitting from Bangladesh captain Mashrafe Mortaza, whose 30 not out included five fours, kept the Tigers in the game, albeit India boast a powerful batting line-up.
India launched their title-defence with a 124-run thrashing of arch-rivals Pakistan at Edgbaston 11 days ago.