Bangladesh dealt a potentially fatal blow to South Africa's hopes of qualifying for the World Cup semi-finals with a stunning 67-run victory in the Super Eights here on Saturday.
Bangladesh did the unexpected when they dismissed South Africa for a modest 184 on a slow pitch after having set a challenging 252-run target in their best-ever batting performance at the tournament.
Their first win over South Africa also threw the tournament wide open as more than four teams are now in contention for the semi-final berths.
Defending champions Australia lead the table with six points from three matches, followed by Sri Lanka (6/4), New Zealand (6/3), South Africa (4/4), England (2/3) and the West Indies (2/4).
Bangladesh, who beat India in the first round, found more than one match-winner as they batted, bowled and fielded with discipline.
Middle-order batsman Mohammad Ashraful played a key role as he smashed a quick 83-ball 87 to help Bangladesh survive South African paceman Andrew Nel's maiden five-wicket haul in the morning session.
Left-arm seamer Syed Rasel then built on Ashraful's effort, dismissing skipper Graeme Smith (12) and in-form Jacques Kallis (32) in his opening spell to put South Africa on the back foot.
Rattled by pace, South Africa then looked clueless against spin.
They found themselves under pressure, but failed to find the batsmen able to rise to the occasion. They were virtually put out of the game as they slipped from 63-1 to a pathetic 87-6.
Left-arm spinner Saqibul Hasan did the maximum damage in the middle overs as he had Mark Boucher (12) caught by Rasel and then held a low return catch to account for Justin Kemp (seven) off successive deliveries.
Spinners Abdur Razzak (3-25) and Mohammad Rafique (1-22) also kept the batsmen silent with their tight spells.
Herschelle Gibbs, batting low down the order and with a runner because of a calf injury, top-scored with an unbeaten 56 in a below-par South African performance.
South Africa will go on to meet New Zealand, the West Indies and England in their last three matches.
Bangladesh were struggling early at 84-4 following Nel's triple-strike before middle-order batsmen Ashraful and Aftab Ahmed (35) steadied the innings with a 76-run stand. Nel finished with 5-45 off 10 overs.
Aftab was the first to go for big shots, smashing two sixes in an over from Kemp. This was the start of the onslaught as Ashraful then improvised brilliantly to help his team post a respectable total.
Ashraful completed his 11th half-century in style, lofting fast bowler Makhaya Ntini for a straight four and then hitting two more boundaries in the same over.
Ashraful struck 12 fours in his 83-ball knock, his best since scoring 94 against England at Trent Bridge in 2005.