After Sri Lanka was bowled out for 152 for its lowest total in the series, Muralitharan claimed 5-29 for his 10th five-wicket haul in 50-over internationals and Nuwan Kulasekara took 3-14 to bowl out Zimbabwe for 133 at Harare Sports Club.
"When we came here we set ourselves goals. We needed to win 5-0. We did that," Sri Lanka captain Mahela Jayawardene said. "Yes, it wasn't convincing, but considering the conditions and that the opposition played well in the last three games, especially with the ball, we have to take that as an achievement.
"We knew it was going to be difficult to get 250 runs on this kind of wicket and we knew we could not afford to play bad shots. We made some mistakes. But the most important thing is that the guys rose up under pressure and came back strongly. We never said it was going to be a walk in the park. We needed to play consistently."
A seventh-wicket partnership of 72 between Zimbabwe captain Prosper Utseya and Keith Dabengwa meant the hosts needed 22 off 51 balls to win after having collapsed to 58-6. But Kulasekara dismissed Dabengwa on 39 and Utseya on 31 to end the comeback.
Earlier, Sri Lanka's Thilina Kandamby hit 40 and Angelo Mathews made 31, with Ed Rainsford taking 3-22.
Sri Lanka captain Mahela Jayawardene opened the batting but was bowled for a second consecutive duck when Utseya in the covers caught him off Tawanda Mupariwa in the fourth over.
Mupariwa struck again with a slower ball to become the fastest Zimbabwean bowler to reach 50 wickets in ODI cricket, Stuart Matsikenyeri at square leg catching Chamara Kapugedara on 4.
It took Mupariwa 28 games to reach that mark, breaking Eddo Brandes' mark of 50 wickets from 37 ODIs.
Matsikenyeri broke a 39-run stand between Kumar Sangakkara and Thilina Kandmby by having Sangakkara caught for 28 off 57 balls by wicketkeeper Tatenda Taibu.
Sri Lanka was on the back foot again when Matsikenyeri scooped a low catch in the covers off Dabengwa to dismiss Mubarak, who was unable to repeat his display from the fourth ODI when he steered the Asians to victory with a composed 60 not out.
Kandimby added 40 runs from 100 balls with Angelo Mathews before being run out in the 45th over, while Kulasekera was clean bowled for one by Ray Price.
Zimbabwe lost its first three wickets for five runs, slumping from 23-0 to 27-3. The next three wickets fell for a further 31 before Dabengwa and Utseya came to the wicket.
Utseya was dropped on nine by Kulasekera at square leg off spinner Ajantha Mendis, but the pair was generally in command.
Dabengwa smashed Mathews over cover for six, then drove elegantly downfield for four in the same over.
For the first time, a pair of Zimbabwean batsmen looked at ease against Muralitharan, when he came back to finish off his three overs. Dabengwa and Utseya continued to make the score board tick with singles.
But the turning point came when Kulasekera, who had just bowled one over in his first spell, was brought back into the attack. He began by bowling Dabengwa for 39 off 90 balls. Kulasekera got his second wicket when he trapped Utseya lbw in the 43rd over.
Kulasekera grabbed his third wicket when Mupariwa drove straight at Mendis at mid-on for a first-ball duck.
Price was the last to go, completely missing Muralitharan's turning ball to be out lbw for 3.