Mehidy Hasan claimed a career best 7-58 as Bangladesh dismissed the visitors for 111, taking a massive 397-run lead in the first innings.
They face an innings defeat, still trailing Bangladesh's first innings total of 508 by 351 runs.
Shai Hope and Shimron Hetmyer were batting on 18 and 13 respectively at the break.
Mehidy led the attack to take the first four wickets of the day before Shakib wrapped up the innings, with the visitors bowled out for the lowest ever score by any side in a Test innings against Bangladesh.
Hetmyer, who top-scored with 39, hit Mehidy for a six in the second over of the day, but the off-spinner flummoxed him for a sharp return catch. Bangladesh never looked back as Mehidy completed his sixth five-wicket haul and Shakib finished with 3-27.
The home side lead the two-Test series 1-0 thanks to their 64-run win in the first Test in Chittagong.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)