Roshen Silva made a half century as Sri Lanka skittled Bangladesh before building a healthy 312-run lead on day two of the second Test in Mirpur.
Bangladesh added just 54 runs to their overnight total of 56-4, with Suranga Lakmal (3-25) and a stunning spell from Akila Dananjaya (3-20) restricting the hosts to 110 all out.
The tourists themselves made laboured progress on a bowler-friendly pitch, but Roshen's unbeaten 58 left Sri Lanka 200-8 in their second innings and in position to wrap up victory within three days.
Dananjaya had done the damage in the morning session, as a sparkling spell returned three wickets in the space of seven deliveries.
Mahmudallah (17) became his first Test victim with one that found the gap and took off the batsman's off-stump, while Sabbir Rahman (0) edged one to midwicket and Abdur Razzak (1) offered up a caught-and-bowled.
Only Mehidy Hasan's gritty 38 provided any form of resistance and, although Sri Lanka lost wickets with regularity, Dimuth Karunaratne's gritty 32 off 105 and a quickfire 28 off 24 from Dhananjaya de Silva helped take the game from Bangladesh.
Dinesh Chandimal added 30, while Roshen contributed heavily to a 113-run session after tea - finding the boundary nine times to earn a standing ovation as Sri Lanka closed on a series win, with the first of the two-Test series having been drawn.