Left arm teenager Mustafizur Rahman has taken six wickets, to help Bangladesh take a 2-0 series lead over India.
India won the toss and elected to bat, before being dismissed for 200 runs.
Bangladesh then chased down the target in just 38 overs.
Mustafizur followed up his incredible debut figures of 5-50, with 6-43, tearing through India's middle order, to become to the first bowler in One Day International history to take 10 wickets in the first two matches of his career.
India struggled from the outset in their innings, losing Rohit Sharma for a duck in the first over. Dharwan and Kholi then steadied for the tourists, before Nasir Hossian struck for the home side, removing Koli for 23, to make it 2-74. Dharwan and Rayudu then fell soon after, leaving India at 4-110.
Captain M.S. Dhoni then tried to spark the favourites and had a 53 run fifth wicket partnership with Saresh Raina. Mustafizur got the vital breakthrough with his third wicket, removing Raina for 34, sparking an Indian collapse.
India proceeded to lose their last five wickets for just 36 runs to be bowled all out for 200 runs off 44.4 overs, with none of the bottom four batsmen scoring more than four runs.
Bangladesh were then given a revised total of 200 runs for victory off 47 overs, with rain interrupting play for an hour during the end of India's innings.
The hosts looked in control at all times during the run chase, despite each batsman getting a solid start without going on with it.
Shakib Al Hasan top scored with 51, while Sarkar, Das and Rahim all scored over 30.
The win gives Bangladesh an unassailable 2-0 series lead in the three match series, to seal their first ever ODI series win against India.
See the full scorecard at www.espncricinfo.com