South Africa won by an innings and 48 runs to clinch the series 2-0 after bowling out Bangladesh for 131 in their second innings. They won the first Test in Bloemfontein by an innings and 129 runs.
South Africa's pace attack put the tourists under pressure from the start of their second innings and Bangladesh contributed to their own downfall with three run-outs, two from direct hits from the deep as the batsmen attempted second runs.
It was a disappointing ending for Bangladesh who briefly held the upper hand on the second day when they reduced South Africa to 134 for five after making 250 in their first innings.
Ashwell Prince and Mark Boucher turned the match decisively in the home side's favour with a South African record sixth wicket partnership of 271.
Prince made a career-best 162 not out while Boucher scored 117. Left-arm spinner Shakib Al Hasan took three wickets in four balls yesterday morning to spark a collapse in which South Africa lost their last five wickets for 24 runs.
Shakib finished with six for 99, his second haul of five wickets or more in two innings during the series. Bangladesh started their second innings with only four overs remaining before lunch but it was enough for Makhaya Ntini to claim the wicket of Imrul Kayes, caught at first slip.
First innings top scorer Junaid Siddique was subjected to a barrage of short-pitched bowling before he gloved a lifting delivery from Jacques Kallis to gully.
Tamim Iqbal twice needed treatment after being hit on the fingers before he slashed at a lifting ball from Morne Morkel and was spectacularly caught by a diving Neil McKenzie at gully.
Bangladesh captain Mohammad Ashraful was then involved in two run-outs. Mehrab Hossain was the victim when Ashraful called for a second run and Hashim Amla hit the stumps at the bowler's end from backward square leg.
Two overs later Ashraful himself was run out after he turned Morkel to the legside and failed to complete a second run before Dale Steyn's throw from deep fine leg hit the stumps.
Shakib Al Hasan cut Morkel to deep backward point as Bangladesh slumped to 95 for six at tea, When Mushfiqur Rahim padded up to Ntini's first ball after the break Bangladesh were doomed, although Mashrafe Mortaza frustrated the bowlers with some adventurous hitting to make 23 not out off 21 balls.