Birmingham - 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.
The part-time off-spinner, who'd taken just six wickets in his previous 18 one-day internationals, removed Bangladesh top-scorers Tamim Iqbal (70) and Mushfiqur Rahim (61).
Bangladesh's third-wicket duo shared a stand of 123 but, ideally, the Tigers would have wanted at least one of them to go on to a bigger score.
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.
The winners of this match will play Pakistan, shock eight-wicket conquerors of England, in Sunday's final at the Oval.
India launched their title-defence with a 124-run thrashing of arch-rivals Pakistan at Edgbaston 11 days ago.