Rohit Sharma's unbeaten century sealed India's place in a Champions Trophy final against arch-rivals Pakistan after the title-holders thrashed Bangladesh by nine wickets at Edgbaston on Thursday.
Bangladesh's total of 264 for seven never looked like being enough and was duly made to look inadequate by India's powerful top-order.
Sharma and fellow opener Shikhar Dhawan (46) put on 87 before Sharma (123 not out) and India captain Virat Kohli (96 not out) completed the job with nearly 10 overs to spare.
Kohli crossed the 8,000 ODI runs barrier during the match, becoming the fastest player to do so in the format.
Their unbroken partnership of 178 delighted the huge India contingent in a crowd of 24,340 ─ a record for a one-day international at Edgbaston.
Yet the real India hero of this match was part-time spinner Kedar Jadhav, who dismissed both of Bangladesh's top-scorers in Tamim Iqbal (70) and Mushfiqur Rahim (61) in a spell of two for 22 in six overs.
The third-wicket duo shared a stand of 123, but Bangladesh's innings faltered after their exits. India hammered Pakistan by 124 runs in the teams' Champions Trophy opener at Edgbaston 11 days ago.
But Pakistan themselves trounced much-fancied tournament hosts England by eight wickets in another lopsided semi-final in Cardiff on Wednesday.
Sunday's match at the Oval in London will be just the second time the Asian giants have met in the final of a major International Cricket Council tournament.
India beat Pakistan by a mere five runs in the 2007 World Twenty20 final in Johannesburg, a victory that led to the creation of the lucrative Indian Premier League.
India had a wicket as early as the first over Thursday after Kohli won the toss and fielded under grey skies.
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.
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.
Tamim 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 made a stylish 61-ball fifty but when, to his evident dismay, he hit a Jadhav 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 (15), 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.
India's reply began with a welter of boundaries, Sharma square-driving Mustafizur Rahman for an elegant four.
Left-hander Dhawan was in fine touch too, hoisting Taskin Ahmed over square leg for six.
The only question now was India's margin of victory, with Bangladesh ─ in their first major semi-final ─ avoiding a 10-wicket defeat when Dhawan sliced skipper Mashrafe Mortaza to backward point.
Sharma completed his 11th ODI hundred in style when he hooked Mustafizur for his first six in 111 balls also including 12 fours.
Kohli then finished the match in emphatic fashion, cover-driving Sabbir for four.
Bangladesh: Tamim Iqbal, Soumya Sarkar, Sabbir Rahman, Mushfiqur Rahim (wkt), Shakib Al Hasan, Mahmudullah, Mosaddek Hossain, Mashrafe Mortaza (capt), Rubel Hossain, Taskin Ahmed, Mustafizur Rahman
India: Rohit Sharma, Shikhar Dhawan, Virat Kohli (capt), Yuvraj Singh, MS Dhoni (wkt), Hardik Pandya, Kedhar Jadhav, Ravindra Jadeja, Bhuvneshwar Kumar, Ravichandran Ashwin, Jaspreet Bumrah