The off spinner moved to within three wickets of becoming the second bowler after Australia's Shane Warne to claim 600 Test wickets when he ripped through the Bangladesh top order to reach the interval with figures of 4-55.
Resuming after the lunch break on 85-2, Bangladesh lost four wickets in the middle session, as only skipper Habibul Bashar put up any sort of resistance with a solid 69 before Muralitharan had him caught by Upul Tharanga.
Playing his 101st Test match, the 33-year-old spinner also trapped Mushfiqur Rahim leg before for two runs, doubling his tally for the innings after taking a pair of wickets in the morning.
The other successful bowlers were Lasith Malinga, who had Shahriar Nafees caught behind by Kumar Sangakkara for nine, and Malinga Bandara, who bowled Mohammad Asraful for 24.
Khaled Mashud (six) and Mohammad Rafique (one) were the not out batsmen at the tea interval.
Bangladesh elected to bat after winning the toss at the Shaheed Chandu Stadium and got off to a good start.
Openers Javed Omar and Nafees Iqbal compiled an impressive opening partnership of 52 runs before Muralitharan trapped Iqbal lbw on 26 with the fourth ball of his first over.
He later trapped Omar (35) in the same manner in his seventh over with the score at 85.
Sri Lanka lead the series 1-0 after scoring an eight-wicket win over Bangladesh in the first Test at Chittagong last week.