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.