Bangladesh moved a point behind England and the World Cup semi-final places as they beat Afghanistan by 62 runs at Southampton.
All-rounder Shakib al Hasan starred again for Bangladesh, taking 5-29 from 10 overs after contributing another half-century with the bat.
In doing so, Shakib became just the second man to make a fifty and take five wickets in a World Cup match, following India all-rounder Yuvraj Singh against Ireland in 2011.
Mushfiqur Rahim anchored the Bangladesh innings with 83 from 87 balls as they posted 262 from their 50 overs.
The Bangladesh spinners, led by Shakib, then suffocated the Afghanistan batsmen in their run chase.
Captain and opener Gulbadin Naib made 47 from 75 balls, and Samiullah Shinwari 49, but Afghanistan never gained control of the required run-rate.
The professional win means Bangladesh are now fifth in the World Cup table, one place behind England with the top four teams progressing to the semi-finals.
However, they have played at least one more game than all the teams above them and England can increase their cushion with victory against Australia at Lord's on Tuesday.
Bangladesh have impressed in this tournament and were one of the teams to benefit from Sri Lanka's win over England on Friday opening up the battle for a semi-final places.
Against Afghanistan, they were solid if unspectacular with the bat but posted a good total on a used pitch on which it was difficult to score. Shakib regained his place as the World Cup's leading scorer, moving to 476 runs with a steady 51 from 69 balls - his fifth score over 50 in the tournament.
After he fell lbw to spinner Mujeeb Ur Rahman, Mushfiqur took on the scoring with an innings of quiet accumulation, hitting only five boundaries - the highlight a six over long on. The Tigers seamers made a scrappy start with the new ball but the introduction of their impressive spinners decided the contest.
Left-arm off-spinner Shakib took a wicket in his first over with opener Rahmat Shah caught at mid-on trying to hit over the top.
After a period of hesitant rebuilding by Afghanistan, Shakib returned for a second spell and claimed the key wickets of Afghanistan captain Gulbadin caught at short extra cover, the dangerous Mohammad Nabi bowled through the gate second ball, and batsman Asghar Afghan caught at deep midwicket for 20.
Najibullah Zadran and Shinwari shared a 43-ball seventh wicket partnership of 56 to suggest a unlikely win was possible but Shakib returned again and dismissed Najibullah to seal his second five-wicket haul in ODI cricket.
Bangladesh have a difficult run-in against India and Pakistan as they bid to qualify for the semi-finals but can take heart from having beaten Pakistan in each of their past four meetings.