The off-spinner grabbed five wickets for 15 runs as Bangladesh, sent in to bat in overcast conditions, were shot out for their third lowest total of 89 in 32.3 overs in the post-lunch session.
Sri Lanka were 227-3 at stumps in reply -- a lead of 138 -- despite a troubled start when seamer Shahadat Hossain removed debutant Malinda Warnapura for zero and Kumar Sangakkara for six in his first two overs.
Captain Mahela Jayawardene, caught off a Hossain no-ball when on 17, hit 93 before he retired hurt due to a strain in his right calf muscle, seven runs short of his 17th Test century.
Opener Michael Vandort, who put on 170 for the third wicket with his skipper, was unbeaten on 87. Tillakaratne Dilshan was the other batsman at the crease on 27.
The 35-year-old Muralitharan took his career tally to 679 wickets, leaving him just 30 away from surpassing retired Australian spinner Shane Warne's world record of 708.
"There was some moisture in the wicket in the morning which helped the bow