Bangladesh posted its highest one-day international total of 330-6 after being made to bat first, then restricted South Africa to 309-8 in front of an ecstatic crowd who made the atmosphere feel more like Dhaka than suburban London.
Losing by 21 runs flattered South Africa, which was as crushed as it was in losing the opener to England by 104 runs. Bangladesh beat the Proteas in 2007, and has other notable World Cup wins over India and England, but this one was executed not by an upstart but by an experienced campaigner carrying confidence from a tri-nations triumph in Ireland which included three wins over the West Indies.
"We have done some upsets at World Cups but we want to prove something at this tournament," man-of-the-match Shakib Al Hasan said. "This is the way we wanted to start. We had the belief, and now we need to keep up this momentum. The job has just started."
South Africa was strangled by spin while chasing for the second time in two World Cup matches. And its injury woes deepened when paceman Lungi Ngidi, who opened the bowling, limped away with a left hamstring problem after delivering only four overs. In his absence part-time offspinners Aiden Markram and JP Duminy bowled and conceded 48 runs in six overs. They were costly.
Ngidi is going for scans on Monday but is expected to be out for at least a week, meaning he could miss their next two games against India and the West Indies. Hashim Amla didn't play as a precaution after being hit on the helmet against England, but is expected to face India on Wednesday, when Dale Steyn should also make his first appearance of the tournament but in another depleted attack.
Bangladesh has no such concerns after launching its campaign in style on the back of its biggest World Cup partnership of 142 by Mushfiqur Rahim and Shakib, one of the world's best allrounders for more than a decade.
They casually took apart the South Africans until they were gone by the 43rd over, after which Mahmudullah and Mosaddek Hossain hit 70 off the last six overs to rush Bangladesh past 300 and to its biggest total in its 33-year history in ODIs.
Afterward, captain Mashrafe Mortaza said it was a good toss to lose. South Africa counterpart Faf du Plessis regretted choosing to bowl first, and giving Bangladesh's spinners second go on a used pitch.
Bangladesh made a thrilling start. In counterattacking short balls from Ngidi and Kagiso Rabada, Soumya Sarkar was streaky with pulls and hooks. He edged to the slips twice, survived an lbw review, and broke his bat hitting six boundaries off Ngidi, who left the field after conceding 34 runs in four overs and didn't return.
Meanwhile, Tamim Iqbal took hits on the thigh and shoulder from Rabada, two days after a serious whack on his left wrist in the nets. Tamim was out for 16, but more importantly he helped to take the sting out of the South African attack.
Soumya rode his luck for 42 off 30 balls, which brought together Mushfiqur and Shakib. They gave the bowlers nothing, reaching their half-centuries serenely. Their fifth century partnership in ODIs reached 142, surpassing the previous best Bangladesh World Cup stand of 141 by Mushfiqur and Mahmudullah in the 2015 win against England. Then Shakib was bowled around his legs trying to sweep Imran Tahir on 75 from 84 balls. Mushfiqur was out for 78 off 80 balls holing out in the deep, but they'd put rare air in sight, and Mahmudullah and Mosaddek went after it.
Mahmudullah, who was dropped on 12, hit 46 off 33 balls, and Mosaddek banged 26 off 20 to eclipse Bangladesh's previous best ODI total of 329-6 in 2015 against Pakistan in Dhaka, and its previous World Cup best of 322-4 in 2015 against Scotland in Nelson.
Set 331 to win, three days after failing to beat England's 311 on the same pitch, South Africa had to pull off the most successful chase in World Cup history. It didn't seriously threaten. The first wicket was wasted when Quinton de Kock was run out for 23 after partner Markram ignored advice to stay in his crease.
Markram tried to compensate with du Plessis, and lasted 10 more overs until Shakib bowled him through the gate for 45 off 56 balls. Du Plessis was all class in compiling 62 off 53 balls, but when he was drawn out by offspinner Mehidy Hasan and lost his leg stump at 147-3, South Africa's hopes walked away with him.
The spinners had South Africa locked up from the start by Mehidy bowling from the second over, Shakib from the 11th, and Mosaddek from the 19th. Shakib's early figures were 7-0-25-1. The pressure to play shots told as South Africans were picked off in the 36th, 40th, 43rd, 46th, and 48th overs with the run rate at 6 and the required rate rising to unlikely levels.
Mehidy, Shakib, and Mosaddek conceded only five boundaries in their 26 overs. South Africa was strangled, and its hopes of a first World Cup title appeared almost lifeless. "We're a proud sporting nation," du Plessis said. "The skills weren't here today but I can promise there will be fight against India on Wednesday."
Bangladesh is back at the Oval to play New Zealand on Wednesday. Shakib said, "We can't take our foot off the pedal."
More AP cricket: www.apnews.com/cricket and https://twitter.com/AP_Sports