Lower-order batsman Mehidy Hasan Miraz conjured an unbeaten 38 in a low-scoring thriller as Bangladesh stunned India by one wicket in the opening one-day international in Mirpur.
Chasing 187 for victory, the home side slumped to 136-9 in the 40th over with India looking in command at the Shere Bangla National Stadium.
Mehidy refused to throw in the towel, however, and combined with Mustafizur Rahman in a 51-run partnership, Bangladesh's highest for the 10th wicket, to secure a memorable victory with four overs to spare.
An upset looked on the cards after Bangladesh, having elected to field, bundled out India for 186 in 41.2 overs.
Shakib Al Hasan (5-36) wrecked India's top order, dismissing Rohit Sharma (26) and Virat Kohli (nine) in the same over.
KL Rahul saved India's blushes with 73 off 70 balls before falling to Ebadot Hossain (4-47) who also claimed the important wicket of Shreyas Iyer (24).
Deepak Chahar gave India the perfect start by dismissing Najmul Hossain with the first delivery of the Bangladesh innings but skipper Litton Das (41) and Shakib (29) kept the hosts on course.
They suffered a mid-innings collapse but Mehidy, dropped by Rahul on 15, punished India for their sloppy fielding and general indiscipline in bowling which resulted in 17 extras.
Mirpur also hosts the second ODI of the three-match series on Wednesday.