Bangladesh posted their highest one-day international total as they got their Cricket World Cup off to a winning start ©Getty Images

Bangladesh posted their highest one-day international total as they got their Cricket World Cup off to a winning start with a shock 21-run victory over South Africa in London.

South African captain Faf du Plessis was made to rue his decision to put Bangladesh into bat after winning the toss as the Asian nation scored 330-6 from their 50 overs at The Oval. 

Mushfiqur Rahim top-scored for Bangladesh with 78 and Shakib Al Hasan hit 75 in a crucial 142-run stand for the third wicket.

Mahmudullah helped propel Bangladesh to a testing total after he smashed 46 runs from just 33 balls.

Chasing a World Cup record score to win, South Africa, beaten by England on the opening day, lost wickets at regular intervals and finished on 309-8, 21 runs adrift of Bangladesh.

South Africa's innings began disastrously as opener Quinton de Kock was run out in shambolic fashion, setting the tone for an ill-fated run chase.

They were dealt a further blow when Faf du Plessis, who looked well positioned, was bowled by Mehedy Hasan Miraz.

Mushfiqur Rahim top-scored for Bangladesh as he hit 78 runs ©Getty Images
Mushfiqur Rahim top-scored for Bangladesh as he hit 78 runs ©Getty Images

South Africa's charge slowly faded owing to a combination of poor batting and disciplined bowling, although they harboured slim hopes of victory when they required 44 runs from the final three overs.

But Bangladesh bowled well to restrict South Africa's scoring.

Mustafizur Rahman was the pick of the Bangladeshi bowlers as he took 3-67, while Mohammad Saifuddin picked up two wickets for 57 runs.

"Mushy always plays that kind of innings, and Shakib batted so well," said Bangladesh captain Mashrafe Mortaza.

"That was a good wicket to bat on, and we knew we had to bowl in the right areas. We were able to get wickets in patches.

"The crowd was behind us - thanks to all the Bangladeshi crowd."

The tournament is due to continue tomorrow as England face Pakistan at Trent Bridge in Nottingham.