Hopes of an historic Test victory rested with debutant Sabbir Rahman who was unbeaten on 59, after England set the hosts a target of 286 on a crumbling wicket.
Sabbir shared an 87-run stand with skipper Mushfiqur Rahim before England regained the initiative with three quick wickets in the final session.
Off-spinner Gareth Batty broke the late resistance with an awkwardly bouncing delivery that prompted skipper Mushfiqur (39) to give a catch to Gary Ballance at short leg.
Batty finished the day with 3-65 while Broad claimed 2-26, but Sabbir kept Bangladesh in contention with a gritty innings that included three fours and two sixes.
More From This Section
Stumps were drawn early due to bad light after England were told they could only use their spinners and not the pace attack in the last five overs, a condition they did not accept.
England's spinners earlier dismissed Bangladesh's top five to leave them on 140-5, as Moeen Ali and Adil Rashid chipped in with useful wickets.
Rashid claimed Imrul Kayes for 43 in the penultimate over before lunch. Kayes, who hit six fours in his 61-ball innings, looked well settled until he misjudged a sweep to get a top edge to Joe Root at slip.
Moeen handed England their first breakthrough when he removed Tamim Iqbal for nine as Ballance took the catch at forward short leg.
Just one ball earlier, Tamim had survived a review after Root took a catch that initially hit the body of a tumbling Ben Stokes at slip. The replay indicated there was no bat or glove involved.
Left-arm spinner Taijul Islam trapped Batty leg before off his second ball after Stuart Broad was run out on his overnight score of 10. Chris Woakes was unbeaten on 19.
The second and final Test will start in Dhaka on October 28.