Resuming day three on 133 for two wickets, Bangladesh lost their first wicket of the day in the third over. Opening batsman Soumya Sarkar played a half-hearted pull shot against Lankan pacer Suranga Lakmal, Lahiru Kumara taking the catch at fine leg.
Soumya added five runs to his overnight tally of 66; his knock featuring eight fours and a six.
Shakib al Hasan played a brisk innings and went for his shots before being dismissed by chinaman bowler Lakshan Sandakan in the 56th over. The left-handed batsman made 23 off 19 balls with one boundary and as many over boundary.
Later, Mahmudullah (eight) and Liton Kumar Das (five) got out quickly and Bangladesh were in all sorts of trouble.
When Liton was dismissed, Bangladesh were reeling on 192/6 and still needed 102 runs to avoid the follow on.
However, Test captain Mushfiqur Rahim continued his run of form, playing a well-crafted 85 off 161 balls. Mushfiq formed a valuable 106-run stand with Mehedi Hasan Miraz for the seventh wicket.
Miraz played a valuable knock for his side, putting behind all his recent struggles. His 106-ball 41 that was preceded by a crucial half-century against India in Hyderabad last month will no doubt give him some confidence for the future.
At the other end, Mushfiq was slowly but surely edging towards his century. However, he was unable to reach the landmark as he was cleaned up by his Lankan counterpart Rangana Herath in 96th over.
Mushfiq’s 85 was constructed with eight fours and a maximum.
Mustafizur Rahman, Bangladesh's last batsman, got out after two balls following the tea break. Following his dismissal, bad light and rain intervened. Play was later called off after a lengthy break due to bad light.
Dilruwan Perera and Herath took three wickets each for the Lankans.
According to weather forecasts, rain is scheduled for day four and five, which will undoubtedly come as a relief for Bangladesh, who still trail the home side by 182 runs.
494 in 129.1 overs lead Bangladesh
312 in 97.2 overs (Mushfiq 85, Soumya 71, Tamim 57) by 182 runs