Sri Lanka struck early on Day 3, picking up four wickets in the opening session as the visitors were in trouble for 213 for 6 after having scored 80 in the first session.
Mushfiqur Rahim switched gears in the second session to add a record 106-run stand with Mehedi Hasan for the seventh wicket.
Rangana Herath dismissed the Bangladesh captain for 85 just on the brink of Tea. The break was taken five minutes prior to schedule as bad light stopped play.
Play was eventually called off with the final session being washed out. Sri Lanka will resume play tomorrow 182 runs in front.
Rain then began soon after Bangladesh resumed play in the third session and were bowled out within two balls for 312, giving Sri Lanka a 182-run lead.