Muralitharan claimed two scalps on the third day to reach the milestone as Bangladesh struggled to 162-7 at tea on the third day after conceding an 82-run first innings lead.
The home side were just 80 runs ahead with three wickets remaining. Experienced all-rounder Mohammad Rafique (39) and Shahadat Hossain (zero) were not out at the break.
Captain Habibul Bashar fought a lone battle with 73 off 104 balls but the Sri Lankan bowlers took turns to torment the home side.
Muralitharan, 33, struck once in each session to become the only bowler besides Aussie leg-spinner Shane Warne (659) to reach 600 wickets in Tests.
The off-spinner's first victim was left-hander Shahriar Nafees (six), who threw away his wicket playing a cross-batted shot to give an easy catch to Farveez Maharoof at mid-on.
Muralitharan got the milestone when former captain Khaled Mashud (12) holed out to Lasith Malinga at deep square-leg and the Sri Lankan players converged to congratulate the bowler.
In the second session, other spinner Malinga Bandara dismissed Mohammad Ashraful (13) and Mushfiqur Rahim (zero) in the same over.
The spinners came into action after pacemen Malinga and Dilhara Fernando bagged a wicket each in the morning session.
Nafees Iqbal (two) was caught behind by Kumar Sangakkara as he failed to negotiate a Malinga bouncer while his opening partner Javed Omar (13) edged a ball from Fernando down the leg to the wicketkeeper.
Earlier, Sri Lanka could add only 14 runs to their overnight 302-8 as paceman Shahadat Hossain grabbed both wickets to finish with his maiden five-wicket haul.
After removing tail-ender Malinga (12), he had left-handed opener Upul Tharanga (165) caught behind by Mashud to finish with 5-86.