Shakib’s brilliance with bat and ball gave Bangladesh a consolation win in the three-game series and robbed England of a clean sweep.
The southpaw hitter landed a quick 75 shot to take Bangladesh to a 246 bout before tearing up England’s best order to finish with numbers at 4-35.
In the process, the 35-year-old became the first player from Bangladesh to claim 300 ODI wickets.
England’s first Jason Roy and Phil Salt laid the groundwork for the chase with a 54-run partnership before the tourists lost three quick wickets.
James Vince, Sam Curran and Jos Buttler also got starts, but wickets fell at even intervals as Shakib fired three of the top four batsmen.
Shakib nearly capped his performance with a five-wicket haul when he trapped Jofra Archer lbw with his final delivery but the England pacemaker successfully overhauled the decision before Chris Woakes became the last wicket to fall in the following.
Earlier, Bangladesh won the coin toss and went for the bat, but the versatile Curran gave England the perfect start after fending off both openers in his first outing.
But Shakib crushed 75 out of 71 deliveries while Mushfiqur Rahim (70) and Najmul Hossain Shanto (53) also scored half a century to help Bangladesh post a respectable total.
The hosts’ last six batsmen failed to build on the middle order partnerships, however, as England point guard Archer finished with three wickets while Adil Rashid won two.
England next face Bangladesh in three Twenty20 matches from Thursday.
(With Reuters entries)