The off-spinner grabbed 5-48 - his 66th haul of five or more wickets in a Test innings - as Bangladesh crashed to 177-9 in their first innings at stumps on the second day in reply to Sri Lanka's 293.
Opener Imrul Kayes top-scored with 33 in an inconsistent Bangladeshi batting performance. Junaid Siddique (29), Mehrab Hossain (29) and Shakib Al Hasan (26) also got starts, but failed to convert them into big knocks.
Muralitharan was superbly backed by left-arm seamer Chaminda Vaas, who took two wickets in his four overs to finish with 2-33. Left-arm spinner Rangana Herath and Dammika Prasad each bagged one wicket.
Sri Lanka were bowled out on the stroke of lunch after resuming at 172-6, with middle-order batsman Thilan Samaraweera scoring a solid 90.
Muralitharan struck with his second delivery when he had Tamim Iqbal (17) caught by a diving Malinda Warnapura at short-leg and then bowled Siddique in the last over before the tea-break.
He was on a hat-trick in the final session when he had Shakib Al Hasan caught by skipper Mahela Jayawardene at first slip and then trapped Mashrafe Mortaza leg-before for no score.
Vaas struck twice in the afternoon session when he had Kayes caught behind and then bagged his 350th Test wicket when he had skipper Mohammad Ashraful caught by Tillakaratne Dilshan in the covers.
The morning session belonged to Samaraweera, who looked set to complete his eighth Test hundred before being the last man out. He was caught by Siddique at first slip off left-arm spinner Shakib Al Hasan after hitting 13 fours.
Hasan claimed two of the four wickets that fell in the morning to finish with an impressive 5-70, his third successive haul of five or more wickets in a Test innings.
Sri Lanka denied the hosts success for nearly two hours in the morning session, with Samaraweera and lower-order batsman Vaas adding 99 for the seventh wicket.
Mortaza broke their stand with the second new ball when he had Vaas caught behind for 37 -- a tally that included six fours.
The tourists' innings did not last long after Vaas' dismissal as they lost their last three wickets for just eight runs.
The second and final Test starts in Chittagong on January 3.