Makhaya Ntini and Morné Morkel took four wickets each as South Africa finished day one of the second Test against Bangladesh 230 runs behind.
At stumps the Proteas had lost Neil McKenzie for a duck, after Bangladesh were rolled for 250 on a lively Supersport Park deck.
Ntini was particularly impressive, grabbing his Bangladeshi quartet while conceding just 32 runs in the 19.2 overs he bowled. He picked up the first wicket of the day, Imrul Kayes nicking off to Graeme Smith at first slip.
Morkel then accounted for Tamim Iqbal and Mohammad Ashraful to leave Bangladesh reeling at 64/3 at lunch. Junaid Siddique batted well after the break, but wickets tumbled around him. Bangladesh were 160/6 at tea, thanks in large part to Siddique and Shakib Al Hasan, who went to 30 briskly.
However, Siddique fell soon thereafter but the South Africans grew complacent and allowed Mushfiqur Rahim to craft a good innings of 65, which aided there charge to 250.
The Proteas will be disappointed to have lost McKenzie, who got a thick edge to backward point, but they have to fancy their chances of building a imposing total on what looks to be a good wicket.
Bangladesh 1st innings 250 (Siddique 67, Mushfiqur 65, Ntini 4-32, Morkel 4-73)
South Africa 1st innings 20/1
For a full scorecard click
South Africa trail by 230 runs
South Africa – 1 Graeme Smith (c), 2 Neil McKenzie, 3 Hashim Amla, 4 Jacques Kallis, 5 AB de Villiers, 6 Ashwell Prince, 7 Mark Boucher (wk), 8 Morne Morkel, 9 Dale Steyn, 10 Makhaya Ntini, 11 Monde Zondeki.
Bangladesh – 1 Imrul Kayes, 2 Tamim Iqbal, 3 Junaid Siddique, 4 Mohammad Ashraful (c), 5 Mehrab Hossain junior, 6 Mushfiqur Rahim (wk), 7 Shakib Al Hasan, 8 Mashrafe Mortaza, 9 Abdur Razzak, 10 Shahadat Hossain, 11 Mahbubul Alam.