The wily 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.
Muralitharan, who claimed 50 wickets in six previous Tests against Bangladesh, once again ripped through the tourists' line-up after the seamers did the early damage.
Dilhara Fernando took 3-33 and Chaminda Vaas and Lasith Malinga shared the remaining two as Bangladesh collapsed to 64-7 by lunch at the Sinhalese Sports Club.
Bangladesh were in danger of falling short of their lowest Test totals -- 86 against Sri Lanka and 87 against the West Indies -- when they further slumped to 69-8 early in the post-lunch session.
Khaled Mashud (12 not out) and Mohammad Rafique (11) took them to 85, before last man Abdur Razzak drove Muralitharan through the covers for a boundary to prevent a new low by his team.
Shakib-Al Hasan's 16 was the top score as the Bangladeshis, who have lost all their seven previous Tests against Sri Lanka, struggled against both pace and spin.
The top five batsmen, including new captain Mohammad Ashraful, were back in the pavilion with just 50 runs on the board.
Openers Javed Omar and Shahriar Nafees put on 28 by the eighth over when both fell before another run had been added.
Fernando claimed former captain Habibul Bashar for two and then trapped the 22-year-old Ashraful in a well-executed plan.
Ashraful, who made seven, pounced on a short delivery and hooked to deep square-leg where Warnapura was perfectly placed to take the skier.
Muralitharan, who was introduced in the 18th over, struck with his fifth delivery and then took wickets at regular intervals to complete Bangladesh's misery.
The hosts left the wicket-keeper's duties to Prasanna Jayawardene as regular stumper Sangakkara took the field as one of seven specialist batsmen in the side.
Bangladesh play three Tests and as many one-dayers on the five-week tour.