Bangladesh pulled off a thrilling coup to stay alive in the tri-series, handing South Africa a second successive defeat in Harare.
Their slew of spin bowlers restricted South Africa to a below-par total in almost subcontinent conditions before Bangladesh's batsmen, led by Mohammad Ashraful and Mahmudullah, chased it down in nervy fashion.
South Africa chose to bat but found the going tough on a slow, sticky pitch.
In contrast, Bangladesh were able to score more easily against an inconsistent South African attack that gave away eight wides and two no-balls despite not having many to defend.
Zimbabwe and Bangladesh are now tied with 8 points each at the top of the points table.