Sri Lanka bolstered its chance to sweep the two-Test series against Bangladesh despite suffering a batting collapse on Day 3 of the final Test on April 1.
After gaining a huge lead in the first innings, Sri Lanka reached 102 for six at the stumps to extend its overall advantage to 455 runs.
The touring team bowled out Bangladesh earlier for a paltry total of 178 but chose not to enforce the follow-on.
Fast bowler Asitha Fernando claimed four for 34 as Bangladesh was dismissed for fewer than 200 for the third time in a row.
His fellow opener Vishwa Fernando picked up two for 38, including the wicket of Zakir Hasan, who top-scored with 54 after Bangladesh had resumed on 55 for one.
It was a big blow for the home side when skipper Najmul Hossain Shanto, on 1, clipped a ball straight to short mid-wicket off left-arm spinner Prabath Jayasuriya (2-65).
Vishwa then dismissed nightwatchman Taijul Islam for 22.
Sri Lanka's bowlers kept up a tight length and received another reward when Asitha claimed two wickets in an over.
Playing his first Test in a year, the dangerous Shakib Al Hasan was trapped lbw for 15 by a sharp inswinger.
Liton Das hit Asitha for a boundary off his second ball, but the bowler exacted his revenge with a short-of-a-length delivery that took the outside edge.
Shahadat Hossain was then caught by Kamindu Mendis off fast bowler Lahiru Kumara (2-19) for 8.
Mehidy Hasan was trapped lbw by Jayasuriya for 7 before Asitha wrapped up the Bangladesh innings by removing Mominul Haque (33) and Syed Khaled Ahmed for 1.
There was another clatter of wickets when Sri Lanka batted again, with Bangladesh fast bowlers Hasan Mahmud (4-51) and Khaled Ahmed (2-29) doing the damage.
At stumps, Angelo Mathews was 39 not out and Jayasuriya was unbeaten on 3.
Sri Lanka won the first Test by 328 runs.