|Font Size -||-A+A|
Fellow paceman Dale Steyn (3-27) and spinner Johan Botha (2-57) combined to take the other five wickets as Bangladesh were bundled out shortly after tea in less than 55 overs.
At close South Africa were 76 for four in reply to Bangladesh's first innings, with fast bowler Shahadat Hossain and veteran spinner Mohammad Rafique taking two wickets apiece for 17 and 19 runs respectively.
South Africa skipper Graeme Smith was bowled out for 10 by Shahadat, who also trapped opener Neil McKenzie with lbw on 10 to leave the visitors on 2-19.
Rafique had Hashim Amla LBW on 25 and bowled Jacques Kallis for 17.
The quick strikes will lift the hosts' confidence after a rocky spell in the opener of the two-match series.
Reduced to 85-5 by the lunch interval, Aftab Ahmed and Saqibul Hasan steadied the innings with a 70-run partnership that took the score to 152 before a late collapse put the tourists well in command.
Aftab was caught at mid-off by Makhaya Ntini off Botha after top scoring for the hosts with 44 and Saqibul was the next to go for 30, when he was caught by AB de Villiers at slip off Morkel.
Morkel then trapped Mohammad Rafique LBW for a duck on the very next delivery and ensured he bagged a five-wicket haul in just his second test when he bowled Mushifiqur Rahim for seven. Steyn bowled Mashrafe Mortaza for 29 to complete the innings.
After winning the toss and opting to bat, Bangladesh's hopes of making a good start were dashed almost immediately when Steyn caught and bowled promising opener Tamim Iqbal for a duck off the second ball of the innings.
Steyn then removed opener Junaid Siddiqui for one with the third ball of his second over, caught behind by wicketkeeper Mark Boucher to leave the hosts reeling on three runs for two wickets.
Morkel took over as Bangladesh's chief tormentor, removing former skipper Habibul Bashar for 11 and Shahriar Nafees for 25 with both players caught in the slips.
Skipper Mohammad Ashraful added 34 before he was caught and bowled by Botha in his first over.