Earlier in the day, Bangladesh could add only 66 runs to their overnight first innings score of 322 for six. The hosts declared their second innings for 159/4 at tea, setting a 459-run target.
Skipper Mushfiqur Rahim, who was not out on 81 on Saturday, went on to post his fifth century in Test cricket. He scored 127.
Off the 66 scored in the morning by Bangladesh, Mushfiqur Rahim alone scored 46.
Mehedi Hasan Miraz was not able to add a run to his overnight score of 51 as he was bowled by seamer Bhuvneshawar Kumar in the first over of the day.
The fall of Miraz's wicket brought in lower-order batsman Taijul Islam (10), who was dismissed by pacer Umesh Yadav with scoreboard reading 339/8.
Also Read
Taskin Ahmed and Rahim then stitched a crucial 39-run ninth-wicket partnership to get past 370-run mark.
In the 125th over, Ahmed was caught by Ajinkya Rahane at first slip off Ravindra Jadeja.
The last wicket could only add 10 runs to the total score as Mushfiqur, who played an excellent knock, was taken by Ashwin, who became the fastest bowler to claim 250 Test wickets.
Ashwin bowled a flat carrom ball down the leg and Rahim looked to sweep but got the glove which resulted in a simple catch to wicket-keeper Wriddhiman Saha, as Bangladesh were bowled out for 388
For India, Yadav scalped three wickets while Ashwin and Jadeja took two wickets each.
Then, Indian openers Murali Vijay and K L Rahul failed to give the hosts the start they wanted. Both openers were dismissed in six overs with scoreboard reading 23.
Vijay (7), who slammed a brilliant 108-run knock in their first innings total of 687 for six declared, was the first to go as he was caught by wicketkeeper Mushfiqur Rahim off pacer Taskin Ahmed.
Rahul (10), who was struggling to find his rhythm, was next to go. He too was taken by Ahmed.
Incoming batsmen Pujara (54 not out) and skipper Virat Kohli (38) then built a 67-run partnership before Kohli was caught at short mid-wicket by Mahmudullah off Shakib Al Hasan. Kohli's 40-ball knock was laced with two boundaries and one six.
The fall of Kohli's wicket brought in Ajinkya Rahane (28), who along with Pujara added 38 runs to get past 120-run mark.
Rahane was bowled by spinner Hasan in the 27th over to reduce the visitors 128 for 4. Jadeja then blasted a six and a four in his first three deliveries faced as India rushed to declare the innings.
Pujara and Jadeja (16 not out) were the batsmen who were at the crease when India declared their innings.