After electing to bat, Bangladesh posted 232-6 — their second-highest World Cup total — with half-centuries from Sharmin Akter (51) and Shorna Akter (51* off 35 balls, the fastest fifty by a Bangladeshi).
Nigar Sultana (32) and Ritu Moni (19 off 8) also contributed as the Tigresses added 82 runs in the final 10 overs.
Bangladesh’s spinners then had South Africa in deep trouble at 78-5, but Marizanne Kapp (56) and Chloe Tryon (62) staged a recovery before Nadine de Klerk sealed victory with three balls to spare.
The defeat leaves Bangladesh sixth in the standings with two points from four matches, denting their semifinal hopes.