Rohit Sharma smashed (104) and forged a 180-run opening partnership with KL Rahul (77) to help India to a commanding 314-9 at Edgbaston.
Bangladesh were all out for 286 in 48 overs in reply despite battling half-centuries by Shakib Al Hasan and Mohammad Saifuddin.
Jasprit Bumrah (4-55) and Hardik Pandya (3-60) shared seven wickets as the Indian bowlers struck at regular intervals to deny Bangladesh significant partnerships.