Vishwa Fernando took four wickets as Sri Lanka dismissed Bangladesh for 188 runs on Saturday in the second session of the first Test in Sylhet.
Lahiru Kumara and Kasun Rajitha claimed three wickets each, leaving the hosts 92 runs behind Sri Lanka's first-innings total of 280.
After tea, Sri Lanka were 19-1 in response, with Nishan Madushka falling for 10 to Nahid Rana, while Dimuth Karunaratne remained at the crease.
Bangladesh's top scorer was nightwatchman Taijul Islam, who made a career-best 47, starting the day at 32-3 alongside opener Mahmudul Hasan.
Kumara struck immediately in the innings, dismissing Mahmudul Hasan for 12 with his first ball, caught by Dhananjaya de Silva at second slip.
Shahadat Hossain, after playing a few aggressive shots, also fell to Kumara, scoring 18 in the same manner.
Taijul and Liton Das put together a 41-run partnership for the sixth wicket before Kumara struck again, removing Liton for 25 with a late swinger.
Taijul was eventually out to Rajitha for 47, caught behind by wicketkeeper Kusal Mendis. Rajitha also dismissed Mehidy Hasan for 11.
The lower order, led by Khaled Ahmed and Shoriful Islam, tried to reduce the deficit with aggressive batting, hitting four sixes. However, Fernando broke their 40-run partnership by dismissing Shoriful for 15 and then Khaled for 22 in quick succession to end the innings.
In their first innings, Sri Lanka scored 280 runs on the first day, with centuries from de Silva and Kamindu Mendis, both scoring 102.
Sri Lanka has a perfect record in Test series against Bangladesh and will play the second and final match in Chittagong starting March 30.