The hosts were all out for a paltry 121 as Shakib and other Bangladesh bowlers continued to strike regularly after the Tigers set a challenging 277 target at the Harare Sports Club Ground on Friday.
Zimbabwe were on the back foot after losing three of their top-order batsmen within 49 runs to the pace trio Taskin Ahmed, Mohammad Saifuddin and Shoriful Islam.
Shakib then took over by sending back Brendan Taylor (24), ending the Zimbabwe skipper’s bid to get the chase back on track.
The south paw sealed his five-for and the victory for his side with the last wicket of tail-ender Richard Ngarava in the 29th over after becoming the Bangladesh bowler with most wickets in ODIs.
He touched former skipper Mashrafe Bin Mortaza’s record 270 wickets with the scalp of Taylor.
Wicketkeeper Regis Chakabva made the highest 54 runs for Zimbabwe before becoming Shakib’s fourth prey.
Earlier, Liton's 102 and useful contributions from Mahmudullah, Mehidy Hasan Miraz and Afif Hossain propelled the tourists to 276 for 9.
Put in to bat first, the Tigers got off to a poor start when Blessing Muzarabani forced Tamim Iqbal to edge behind.
Muzarabani continued to extract bounce and snared the key scalp of Shakib.
Tendai Chatara then made up for his poor start by dismissing Mohammad Mithun.
Ngarava had Mossadek Hossain chase a wide delivery to make matters worse for Bangladesh at 74 for 4.
Liton then joined hands with the experienced Mahmudullah to steady the innings by mostly looking to take singles and twos. But they played the occasional big shot off the spinners to keep the scorecard ticking.
Zimbabwe would be ruing the fact that the loud appeals for a caught behind against Liton in the 25th over was turned down. Liton had another reprieve in the 35th over when the fielder at backward point put down a tough chance. Mahmudullah fell to a slower one from Luke Jongwe.
Liton then attempted a volley of shots and reached his century in the 40th over.
Ngarava soon picked up the scalp of Liton but the pair of Afif and Miraz shared a 58-run stand to push Bangladesh past the 250-run mark.