Taijul Islam struck twice in the morning of the fifth and final day to revive Bangladesh's hopes of an unlikely win over Sri Lanka in the first Test in Chittagong on Thursday.
Taijul bowled Kusal Mendis for 48 and then removed first-innings centurion Angelo Mathews for a duck with a return catch to reduce the visitors to 128-4 at lunch at Zahur Ahmed Chowdhury Stadium.
Skipper Dimuth Karunaratne held on with an unbeaten 44 as Sri Lanka led Bangladesh by 60 runs at the interval. Dhananjaya de Silva was accompanying him on 12.
Resuming on 39-1, still 29 runs behind Bangladesh, Sri Lanka began aggressively as Mendis hit Taijul for two fours in the first over of the morning.
He struck pace bowler Khaled Ahmed for three consecutive fours, before bringing up a 50-run stand with Karunaratne with a six off Nayeem Hasan.
But left-arm spinner Taijul, who also took a wicket on the previous day and played a key hand in a run-out, put a brake on Sri Lanka's scoring spree.
He bowled Mendis, who faced only 43 balls and hit eight fours and a six, with a sharp turn and then choked Mathews with several dot balls on the trot before forcing him to give a return catch.
Bangladesh were one bowler short on the fifth day after paceman Shoriful Islam was ruled out of the two-Test series following a blow he received on his hand while batting on Wednesday.
Replying to Sri Lanka's first-innings 397, Bangladesh were all out for 465 when Shoriful was retired out.
Tamim Iqbal (133) and Mushfiqur Rahim (105) starred for Bangladesh after Mathews hit 199 to hold the Sri Lankan innings together. Nayeem claimed 6-105 for Bangladesh in the first innings.