London: Bangladesh made the perfect start to their World Cup campaign as their highest one-day international score inspired a 21-run win over a beleaguered South Africa on Sunday.
Mashrafe Mortaza's side posted 330 for six as Mushfiqur Rahim (78) and Shakib Al Hasan (75) laid the foundations of their impressive display at the Oval.
Mahmudullah's boisterous 46 not out from 33 balls pushed Bangladesh past their previous highest one-day international total of 329 for six against Pakistan in 2015.
Attempting to become the first team to successfully chase more than 330 to win a World Cup match, South Africa fell short t 309 for eight.
Proteas skipper Faf du Plessis scored 62 from 53 balls, but Bangladesh seamer Mustafizur Rahman took three wickets and economical spinners Shakib and Mehidy Hasan wrapped up a memorable victory.
After reaching the World Cup quarter-finals in 2015, Bangladesh again look capable of shaking up cricket's established order, to the delight of their army of vociferous supporters who packed the Oval.
"It will be one of our top wins," said Shakib. "We have done some upsets at World Cups but we want to prove something at this tournament."
Meanwhile an elated Mortaza added: "Mushy always plays that kind of innings, and Shakib batted so well.
"We knew we had to bowl in the right areas. We were able to get wickets in patches," added Mortaza, who thanked the Bangladesh fans for their support.
In contrast, South Africa are in turmoil after Du Plessis' decision to bowl first backfired despite two wickets from veteran spinner Imran Tahir in his 100th ODI appearance.
With the World Cup just four days old, they have already lost twice in south London - this disappointing performance following their 104-run thrashing by hosts England.
South Africa, who have never won the World Cup, are left with little margin for error in the rest of the 10-team round-robin group stage.
It won't get any easier for the Proteas in their next match when they face title contenders India on Wednesday.
'Skills weren't here'
With Dale Steyn once again sidelined by a shoulder injury, South Africa suffered a fresh blow when fellow paceman Lungi Ngidi limped off with a reported hamstring problem after bowling just four overs on Sunday.
"I'm not sure how serious Ngidi's injury is but it could be days or weeks out," said Du Plessis.
"Dale Steyn is bowling in the middle now so hopefully he's close."
He added: "We're a proud sporting nation. The skills weren't here today but I can promise there will be fight against India on Wednesday.
"We're only firing at 50-60 percent and it shows than even Bangladesh can beat that."
Quinton de Kock and Aiden Markram needed to get South Africa's chase off to a fast start and they reached 49 before a disastrous blunder sent them spiralling towards defeat.
De Kock was run out for 23 after being rashly called for a single by Markram, whose partner's edge was fumbled by Mushfiqur before the wicket-keeper recovered to throw out the opener.
That brought Du Plessis to the crease and together with Markram he put on 53 in 60 balls.
But Shakib curtailed that partnership when his perfectly-flighted delivery bowled Markham for 45 to leave South Africa 102 for two in the 20th over.
That made Shakib just the fifth player to score 5,000 runs and take 250 wickets in ODIs.
Du Plessis completed a 45-ball fifty with a six off Mosaddek Hossain.
But that blast got du Plessis' adrenaline flowing too fast and a charge at Mehidy saw him bowled after he misjudged the flight.
The required run-rate was at 10 an over by the time Rassie van der Dussen's agricultural swipe saw him bowled by Mohammad Saifuddin for 41.
Saifuddin removed Andile Phehlukwayo and when JP Duminy was bowled by Mustafizur for a defiant 45, Bangladesh's jubilant fans could get the party started.