Akash Deep started on day 1 by dismissing the Bangladesh openers cheaply. He got rid of Zakir Hasan for a 24-ball duck.
Ravichandran Ashwin sent Najmul Hossain Shanto packing, a few overs before day 1 came to a close.
No play was possible on 2nd and 3rd day due to persistent rain and wet outfield.
When play began on time on day 4, India were electric on the field. Rohit Sharma plucked a one-handed blinder to get rid of Tamim Iqbal.
A few overs later, Mohammed Siraj also took a one-handed overhead catch, sending Moahammed Siraj packing.
Ravindra Jadeja took only 1 wicket in Bangladesh's first innings and with that became the 7th Indian to pass 300 Test scalps.
Yashasvi Jaiswal top-scored for India in the first innings, smacking 72 off 51 deliveries. Jaiswal's knock help set up a sizeable lead for India.
Jasprit Bumrah picked up figures of 18-7-50-3 in Bangladesh's 2nd innings to bowl them out for 146.
Yashasvi Jaiswal and Virat Kohli had a half-century stand to set the win up for India.