South Africa was led by centuries from Ashwell Prince, who hit a career-best 162 not out, and Mark Boucher (117) and carved out a first innings lead of 179. They were dismissed shortly before lunch Friday, and then skittled Bangladesh for 131 in their second innings, in 36.4 overs.
Although Bangladesh were competitive for longer periods in the second Test, they put up a poor show in their second innings in the face of fiery fast bowling from the Proteas, with Makhaya Ntini, Morne Morkel and Monde Zondeki each picking up two wickets. The tourists also suffered three run-outs.
Bangladesh showed no stomach for the Proteas' short-pitched bowling, and only four batsmen reached the 20s. Debutante middle-order batsman Raqibul Hasan was the top scorer with 28.
South African opening batsman Neil McKenzie scored a duck when his side batted, but grabbed his second great diving catch in the gully, off Morne Morkel, to send Tamim Iqbal on his way for 20.
Prince was named man of the match and of the series. He scored 59 not out in his only innings in the first Test.
The major breakthrough for the tourists had come via left-arm spinner Shakib al Hasan, who took three wickets in fours balls in his second over of the day, midway through the first session.
Al Hasan finished with 6-99 in the Proteas first innings. He was clubbed for 11 runs in his first over of the day, which included a four and six to midwicket by Prince, but he hit back dramatically in his next over.
Prince surpassed his previous best score of 149, scored against England at Leeds earlier this year, just over an hour into the day's play, but Mark Boucher's dismissal soon afterward set in motion a lower-order collapse.
The South African wicketkeeper prodded an Al Hasan delivery to silly mid-off when he had made 117. He had hit 16 fours and the partnership between he and Prince was broken at 271, compiled in 190 minutes.
Morne Morkel chopped the next ball onto his leg and back onto the stumps to be out for a duck, and two balls later Monde Zondeki was caught behind as Al Hasan's final ball of the over brushed his gloves.
Makhaya Ntini was the third batsman in a row dismissed without scoring, when he drove Shahadat Hossain to mid-off for Mohammad Ashraful to take a diving catch. Dale Steyn, who scored one run, helped Prince add 17 for the last wicket before bottom-edging an attempted hook onto his stumps to give Hossain his second wicket.
Prince's 10th Test century meant he has scored a hundred against all the other test-playing countries except Sri Lanka. The gritty left-hander finished with 23 fours and two sixes.
South Africa won the first Test by an innings and 129 runs at Bloemfontein.