Bangladesh reached 29-2 at lunch on the second day as Moeen bowled opener Imrul Kayes for 21 off his very first ball and then had Mominul Haque caught Ben Stokes at slip for a duck.
Earlier, 18-year-old debutant off-spinner Mehedi Hasan claimed the final wicket of Stuart Broad to finish with 6-80 as England could add just 35 runs to their overnight 258-7 before they were all out.
Left-arm Tajiul Islam took the other two wickets that fell in the morning in England's innings to return figures of 2-47.
Adil Rashid was given out leg-before off Mehedi in the next over but the decision was overturned after review as replays indicated the ball had been missing leg stump.
More From This Section
Rashid made good use of his fortune to score a brisk 26 before a fine diving catch at cover by Sabbir Rahman off Taijul ended his innings.
Broad also profited from the Decision Review System as he was given out by Kumar Dharmasena off Taijul before it was overturned.
Umpire Chris Gaffaney initially declared Broad not out off Mehedi, but wicketkeeper Mushfiqur immediately demanded a review which showed the ball took a sharp edge before going into the hands of captain Mushfiqur Rahim.