Bangladesh left-arm quick Mustafizur Rahman took 4-37 on debut and just missed a hat trick as South Africa was bowled out for 248 on the first day of the first Test today.
Legspinner Jubair Hossain, with 3-53, also dented the progress of the Proteas, who slumped from 136-1, and scored at less than three runs per over.
Another big contributor was fast bowler Mohammad Shahid, who was wicketless but brought pressure by conceding only 34 runs in 17 overs, and notching nine maidens in his fourth Test.
More From This Section
Bangladesh was 7-0 in two overs by stumps.
Fresh from a first series loss to Bangladesh in one-day internationals, the visitors made fluent progress in the first session after winning the toss, posting 104-1 by lunch.
Opener Stiaan van Zyl scored a brisk 34 in an opening stand of 58, the only wicket to fall in the morning. Elgar and Du Plessis took South Africa to lunch, after which they stalled.
They added 78 for the second wicket, then were removed within three balls.
Left-arm spinner Taijul Islam delivered one with extra bounce, and Elgar nicked behind. Wicketkeeper Liton Das dived to his right to take the catch at his second attempt. Elgar hit three fours in his 111-ball knock.
In the immediate next over, another left-arm spinner, Shakib Al Hasan, dismissed Du Plessis with a straighter delivery which trapped him. Du Plessis sent the ball five times across the boundary rope in his 122-ball stay at the crease.
South Africa had to claw for runs in the session, but captain Hashim Amla and Bavuma appeared settled and reviving the side until Mustafizur sparked a collapse, taking three wickets in just four deliveries.
Amla was his maiden Test wicket with an edge behind on 13, and JP Duminy was hit on his front pad next ball for a duck, and didn't survive Bangladesh's video appeal. Quinton de Kock blocked the hat-trick ball, then was late to the next one and lost his off stump. South Africa was 173-6.
Bavuma occupied the crease for a career-best score, while his teammates regularly departed.
He was the last batsman out, offering a simple catch to Jubair at deep midwicket off Mustafizur. Bavuma hit five fours in his 108-ball 59.