Sri Lanka went to lunch on the fourth day on 68-2, an overall lead of 229 runs with eight wickets in hand on a sluggish and slow pitch at the Zahur Ahmed Chowdhury stadium. (Agencies)
Off-spinner Mohammad Mahmudullah dismissed both openers, Dimuth Karunaratne and Kaushal Silva, in his first three overs to leave the tourists tottering at 49-2.
Left-handed Karunaratne was snapped up smartly in the slips by Nasir Hossain for 15, while Silva was trapped leg-before for 29.
Kumar Sangakkara, who scored a triple-century in the first innings, was unbeaten on 17 at the break. Mahela Jayawardene was on six.
Earlier, Bangladesh were bowled out for 426 in their first knock within 25 minutes of the start in reply to Sri Lanka's 587.
Spinner Ajantha Mendis finished with six for 99, having claimed both the remaining wickets after Bangladesh resumed the day at 409-8.
Mendis dismissed Mahmudullah with the morning's fourth delivery, forcing a catch to short-leg before the batsman had added to his overnight score of 30.
Al-Amin Hossain was bowled by Mendis for nine, leaving last man Abdur Razzak unbeaten on 11.
Off-spinner Dilruwan Perera supported Mendis with three wickets, while seamer Suranga Lakmal took one.
The tourists are looking to sweep the short series after winning the first Test by an innings and 248 runs in Dhaka last week.
Sri Lanka went to lunch on the fourth day on 68-2, an overall lead of 229 runs with eight wickets in hand on a sluggish and slow pitch at the Zahur Ahmed Chowdhury stadium.