Spin bowlers Kuldeep Yadav and Ravindra Jadeja engineered a top-order collapse as India restricted Bangladesh to 256-8 in a World Cup match in Pune on Thursday.
Bangladesh openers Tanzid Hasan, whose 51 was his maiden one-day international fifty, and Liton Das (66) were both in fine touch.
The Tigers-- who have won three of their last four ODIs against India -- were well-placed at 93-0 only to slump to 137-4 after Najmul Hossain Shanto, deputising as Bangladesh captain for the injured Shakib Al Hasan, won the toss on a good batting pitch.
But Mushfiqur Rahim's 38 and fellow veteran Mahmudullah's dashing 46 bolstered the total before Shoriful Islam ended the innings with a spectacular six over extra cover off Jasprit Bumrah.
Jadeja took a miserly 2-38 from his 10 overs and Yadav, who made the initial breakthrough, 1-47.
Tournament hosts India are bidding for a fourth successive win at this World Cup, with Bangladesh having lost two of their three matches after defeating Afghanistan.
After some testing early overs, 22-year-old left-hander Tanzid attacked both Bumrah and Mohammed Siraj.
He then struck their fellow paceman Shardul Thakur for 16 runs in three balls, with two sixes separated by a stylish on-driven four.
Tanzid, whose highest score in eight previous ODIs was 16, completed a 41-ball fifty before he was lbw to left-arm wrist-spinner Yadav to leave Bangladesh 93-1 in the 15th over.
Liton was still there but he carelessly lofted Jadeja to long-off.
India were a bowler down after Hardik Pandya managed just three balls in the ninth over before limping off with ankle damage.
Virat Kohli, bowling in a one-day international for the first time in six years, completed Pandya's over.
Bangladesh had a setback even before play started when key all-rounder Shakib was ruled out with a thigh injury suffered during Friday's eight-wicket loss to New Zealand in Chennai.
Brief scores: Bangladesh 256-8 in 50 overs (Liton Das 66, Tanzid Hasan 51) v India.
jdg/dj