Bangladesh were struggling on 71-3 at lunch after conceding an 82-run first innings lead. Captain Habibul Bashar (38) and Mohammad Ashraful (nine) were the not out batsmen at the break.
Sri Lankan pacemen Lasith Malinga and Dilhara Fernando Friday bagged a wicket each in the morning and spinner Muttiah Muralitharan came on to chip in with a scalp as Bangladesh failed to get a partnership going.
Nafees Iqbal (two) was caught behind by Kumar Sangakkara as he failed to negotiate a Malinga bouncer while his opening partner Javed Omar (13) edged a ball from Fernando down the leg to the wicketkeeper.
Left-hander Shahriar Nafees (six) then threw away his wicket as he played a cross-batted shot to ace spinner Muralitharan and gave an easy catch to Farveez Maharoof at mid-on.
Earlier, Sri Lanka could add only 14 runs to their overnight 302-8 as paceman Shahadat Hossain grabbed both wickets to finish with his maiden five-wicket haul.
After removing tail-ender Malinga (12), he had left-handed opener Upul Tharanga (165) caught behind by Khaled Mashud to finish with 5-86.