Bangladesh all-rounder Shakib Al Hasan scored his second century in as many World Cup matches while Liton Das hit an unbeaten 94 as they thumped twice champions West Indies by seven wickets in Taunton.
Chasing 322 for a famous victory, Shakib took complete control with an unbeaten 124 off 99 deliveries, as his ninth ODI century guided Bangladesh home with 51 balls to spare.
The 32-year-old became the second Bangladesh player to pass 6,000 runs in ODIs after Tamim Iqbal, making his fourth consecutive 50-plus score to move past Australia skipper Aaron Finch as the tournament's top scorer with 384 runs.
"To stay at the wicket till the end was most satisfying," man of the match Shakib said after leading the second highest successful run chase in World Cup history, matching Bangladesh's effort against Scotland four years ago.
Only Ireland have chased down a bigger total when they scored 329-7 to beat England in 2011.
"I've been working on my batting and it's paying off. I know if I bat at number three I'll get more opportunities, more time to bat," Shakib said.
After Bangladesh started strongly through openers Tamim (48) and Soumya Sarkar (29), Shakib and Das added 189 runs for the fourth wicket to take the game away from West Indies.
World Cup debutant Das, who smashed Shannon Gabriel for three consecutive sixes in the 38th over, scored the winning runs with a boundary off the same bowler.
More Cricket World Cup news
- India cruise past Pakistan
- Australia outclass Sri Lanka to go top of the table
- Root century helps England see off the West Indies
- Stead doesn't see advantage after India game abandoned
- NZ and India split points after washout
- 'Tournament wide open' - Taylor
West Indies opener Shai Hope made a patient 96 while opener Evin Lewis and Shimron Hetmyer also made half-centuries to help the Caribbean side post 321-8 after being asked to bat first.
Hope anchored the innings superbly with his 121-ball knock while Lewis hit 70 before Hetmyer's 26-ball 50 and skipper Jason Holder's 33 off 15 balls boosted the West Indies total.
"I thought we were about 40-50 runs short, the wicket played well throughout," Holder said.
"We could have been more disciplined with the ball and we also let ourselves down in the field. It was just a situation where we never got momentum going as we should.
"No excuses, we should have been more disciplined. Having said that, every game is a final and we have to pull ourselves up," added Holder whose team are seventh in the standings and struggling to make the semi-finals.
Bangladesh, who are fifth in the table with five points, meet holders Australia on Thursday while West Indies play New Zealand on Saturday.