The victory also means India will take on Pakistan in the final on Sunday at The Oval in London, in what would be a first meeting between the arch-rivals in the final of an ICC 50-over tournament.
After their bowlers had restricted Bangladesh to a below par total of 264, the Indian top order of Rohit Sharma (123*), Shikhar Dhawan (46) and Virat Kohli (96*) made a mockery of the target, chasing it down with 59 balls to spare.
Bangladesh needed to put pressure on India by picking up early wickets but the old firm of Dhawan and Rohit didn't allow the opposition to make any in roads. Both batsmen attacked Mustafizur Rahman to defang the 'mystery' bowler early as runs came at a brisk pace for India.
Champions Trophy 2017: India vs Bangladesh
Dhawan launched an aggressive attack in the eighth over as he hit Taskin Ahmed for two boundaries and a six, as the Bangladeshi paceman was guilty of pitching the ball too short.
The duo, who are the most successful opening pair in the history of Champions Trophy, were all-set to put on another century stand until Dhawan had a brain snap. He walked down the pitch to Mashrafe Mortaza in search of a boundary, that would take him to his fifty, but ended up getting a leading edge, which was caught at backward point, to depart for 46.
India had lost their first wicket with 87 runs on the board and Bangladesh sniffed an opportunity. But Rohit Sharma, in the company of Indian captain Virat Kohli, ensured Bangladesh never had a chance.
Kohli was authoritative as always, playing some delightful strokes off the front foot, while Rohit was elegance personified as he cut and flicked with elan. Bangladesh's bowlers lacked any teeth as the duo went about chasing the target with gay abandon.
Rohit brought up his 11th one-day century in style with a perfectly timed hook shot off the bowling of Mustafizur Rahman. Thereafter it was the Indian captain's turn to reach a landmark as he became the fastest to score 8000 runs in ODI cricket (175 innings), beating AB de Villiers' record by 7 innings.
India chased the target down on the first delivery of the 41st over with Virat Kohli hitting the winning boundary.
Earlier, Bangladesh flattered to deceive in their innings as a 123-run third wicket stand between opener Tamim Iqbal and Mushfiqur Rahim put the Tigers in a position from where they could have easily notched up a total in excess of 300.
Virat Kohli's decision to win the toss and bowl first was vindicated as Bhuvneshwar Kumar went past Soumya Sarkar's defense in the very first over as he cleaned up the southpaw for a duck.
Sabbir Rahman was the next man in and he took the attack to the duo of Bhuvneshwar and Jasprit Bumrah, playing an array of attacking shots to try and unsettle the seam bowling pair.
But a period of sustained pressure finally worked as Sabbir's desire to deal in boundaries backfired. Bhuvneshwar bowled a slower delivery short and wide outside the off-stump and in his desire to manufacture some power, the Bangladesh number 3 hit one straight to Jadeja at backward point.
With Sabbir gone for 19, Bangladesh were reduced to 31/2 and were in desperate need of a partnership. Tamim Iqbal and Mushfiqur Rahim — two of the team's most experienced batsmen — then got together to steady the ship.
The duo mixed caution with aggression to keep the scoreboard ticking. Mushfiqur hit three consecutive boundaries on the last three deliveries of the 9th over, bowled by Bhuvneshwar Kumar, to signal his intent.
Tamim Iqbal had got off to an uncharacteristically sedate start and could have returned to the pavillion in the 13th over as he played on to a Hardik Pandya delivery. But just as the bails were broken, the umpire signalled a no ball as Hardik had overstepped. Tamim rode on his luck and opened up soon.
The duo tackled Ashwin really well, playing the off-spinner late to negate the threat posed by him.
Both Mushfiqur and Tamim played attacking shots to ensure Bangladesh maintained a healthy run-rate. Tamim reached his half-century on the last delivery of the 19th over, bowled by Ravindra Jadeja, as he played a reverse lap sweep that lobbed over the third man fielder to go to the fence.
Tamim then decided to target India's premier spinner, as he hit Ashwin for three consecutive boundaries in the 22nd over. India were under the pump and the mid-pitch meetings between Kohli and Dhoni started.
With Bangladesh notching up an impressive 142/2 at the end of the 25th over, it was time for Virat Kohli to change a few things and he gambled by bringing on Kedar Jadhav's part-time off-spin.
Jadhav bolwed a few rank looseners but was lucky that the shots were hit straight to the fielders as he gave only six runs in his first over. Mushfiqur Rahim brought up his half-century in the 27th over of the innings and Bangladesh looked on target to breach the 300-run mark as the platform was now set.
But Tamim's decision to attack Jadhav turned out to be a costly one. The southpaw was restless to get a big one off the part-timer and he went for a slog sweep off a short pitched delivery. Tamim failed to connect and was clean bowled for 70. Jadhav had struck and Kohli's master ploy had worked.
The in-form Shakib Al Hasan came out to bat next but took his time to get going as India started applying pressure on the new batsman. Shakib's stay in the middle was cut short, when his attempted square cut off Ravindra Jadeja found an inside edge and the ball got stuck in Dhoni's gloves. The left-hander departed for 15 as Bangladesh slipped to 177/4 in the 35th over.
Mushfiqur Rahim, the set batsman, decided to attack Jadhav in the very next over and ended up giving a simple catch to Virat Kohli to depart for 61. Mushfiqur's suicidal shot meant Bangladesh had now plummeted to 179/5. That wicket made it certain that Bangladesh had blown away the chance to post a total in excess of 300 runs.
Mahmudullah (21) and Mosaddek Hussain (15) tried to re-build in order to create a platform for a relaunch but Jasprit Bumrah's terrific death bowling put paid to those chances.
Bumrah got the better of Mosaddek with a short delivery and then cleaned up Mahmudullah with a yorker.
At one point it seemed Bangladesh might cave in under 250 runs but captain Mashrafe Mortaza's cavalier batting took the Tigers to a fighting total of 264/7.
Bhuvneshwar KumarChampions trophychampions trophy 2017India Beat Bangladeshindia vs bangladeshIndia vs Bangladesh Highlightsjasprit bumrahKedar Jadhavrohit sharmavirat kohli
First Published: June 15, 2017, 9:48 PM IST