Das’ 102 saved Bangladesh from 74-4 and lifted the visiting team to 279-6 in 50 overs batting first at Harare Sports Club.
Zimbabwe was all out for 121 in just 28.5 overs for a hefty home defeat.
Shakib’s five made him Bangladesh’s leading wicket-taker in ODIs, overtaking seam bowler and former captain Mashrafe Mortaza.
Wicketkeeper Regis Chakabva made 54 for Zimbabwe but there was hardly any other resistance as Shakib’s left-arm spin claimed four of the last five wickets.
Zimbabwe’s Timycen Maruma didn’t bat after he sustained a leg injury while fielding.
Shakib’s third five-for in ODIs took him to 274 career wickets. He is already Bangladesh’s leading wicket-taker in tests and Twenty20s.
The teams will play two more one-dayers and three T20s. Bangladesh won the only test of the tour, also at Harare, by 220 runs.