The left-arm spinner got Mohammad Ashraful and then accounted for well-set Jahurul Islam and Mohd Mahmudullah off successive balls as Bangladesh reached 158-4 in their second innings at stumps.
The tourists, trailing by 106 on first innings, are now just 52 runs ahead with six wickets in hand. Mominul Haque was unbeaten on 36 with skipper Mushfiqur Rahim seven not out.
The stumble came after Bangladesh made a strong start, with Tamim Iqbal (59) and Jahurul (48) putting on 91 for the opening wicket. Sri Lanka were earlier bowled out for 346 in their first innings in reply to Bangladesh’s 240.