The off-spinner finished with 6-28 as Bangladesh were shot out for 131 in their first innings before lunch on the second day at the Asgiriya stadium.
Heavy rain soon after Bangladesh were dismissed forced Sri Lanka to wait until an hour after tea to begin their reply and they managed to play only 8.4 overs before rain set in again.
Sri Lanka were 30-0 when play was abandoned for the day with Michael Vandort on 25 and Upul Tharanga on four.
The hosts, seeking a 3-0 sweep of the series after winning the first two Tests, have been frustrated by the rain interruptions, which allowed just 29 overs on Wednesday and 28.3 overs on the second day.
The poor drainage and coverage system at the stadium left the ground staff struggling to dry the muddy outfield in the brief spells when the downpours stopped.
When play began 30 minutes late due to a wet outfield, the tourists lost their last six wickets for 33 runs as Muralitharan and seamer Sujeewa de Silva ran through the lower order.
Muralitharan took his career tally to 694 wickets, leaving him just 14 away from equalling Australian Shane Warne's world record of 708 wickets.
The off-spinner, who still has unfinished business with Bangladesh in the second innings, hopes to overtake the retired Warne when Sri Lanka play two Tests in Australia in November.
Bangladesh had added 26 runs to their overnight score of 72-4 when de Silva forced Tushar Imran to edge a catch to Sri Lankan captain Mahela Jayawardene at first slip.
Tushar, who was flown in for the final Test to bolster the batting, made 17 in a fifth-wicket stand of 34 with his captain Mohammad Ashraful.
Ashraful, who made a century in the previous Test, hit 26 with the help of three exquisite boundaries but drove wildly at de Silva and edged a simple catch to wicket-keeper Prasanna Jayawardene.
Muralitharan, who had taken two wickets on the first day, earned his third wicket in the innings with a brilliant return catch to dismiss Mashrafe Mortaza that reduced Bangladesh to 118-7.
As Mashrafe jabbed the ball high to short cover, the 35-year-old Muralitharan ran to his left and dived full-length, picking up the catch with his outstretched left hand inches off the ground.
Muralitharan took another return catch, this one a simple skier running to his left, to remove Mohammad Rafique and claim 100 Test wickets in his home city from 15 matches.
The wily bowler had the last two batsmen, Shahadat Hossain and Syed Rasel, caught close to the wicket to leave Mushfiqur Rahim unbeaten on 11.
Scoreboard
BANGLADESH (1st Innings, overnight 72-4):
Javed Omar lbw b Malinga 8
Shahriar Nafees c de Silva b Murali 29
Habibul Bashar c P. J’wardene b Maharoof 18
Rajin Saleh c M. J’wardene b Murali 0
M. Ashraful c P. J’wardene b de Silva 26
Tushar Imran M. J’wardene b de Silva 17
Mushfiqur Rahim not out 11
Mashrafe Mortaza c and b Murali 5
Mohammad Rafique c and b Murali 5
Shahadat Hossain c Dilshan b Murali 0
Syed Rasel c Silva b Murali 0
EXTRAS (B-4, LB-2, W-1, NB-5) 12
TOTAL (all out, 48.5 overs) 131
FALL OF WKTS: 1-10, 2-50, 3-61, 4-64, 5-98, 6-111, 7-118, 8-130, 9-131.
BOWLING: Malinga 10-2-41-1 (4nb, 1w); de Silva 12-3-29-2; Maharoof 8-4-21-1 (1nb); Muralitharan 14.5-6-28-6; Dilshan 4-1-6-0.
SRI LANKA (1st Innings):
M.G. Vandort not out 25
W.U. Tharanga not out 4
EXTRAS (NB-1) 1
TOTAL (for no wkt, 8.4 overs) 30
TO BAT: K.C. Sangakkara, D.P.M.D. Jayawardene, L.P.C. Silva, T.M. Dilshan, H.A.P.W. Jayawardene, M.F. Maharoof, S.L. Malinga, M. Muralitharan, W.R.S. de Silva.
BOWLING (to-date): Mashrafe Mortaza 3-0-12-0; Syed Rasel 4-0-18-0 (1nb); Shahadat Hossain 1.4-1-0-0.—AFP