Keshav Maharaj and Simon Harmer starred with the ball as a dominant South Africa edged closer to a series victory over Bangladesh in Port Elizabeth.
Bangladesh resumed at 139-5 on the third day of the second Test, but an efficient Proteas attack picked up where they left off on day two with the ball, dismissing the tourists for just 78 further runs.
The hosts declared at 176-6 in their second innings after Sarel Erwee (41) and Kyle Verreynne (39 not out) helped them to a 412-run lead, before removing Tamim Iqbal, Mahmudul Hasan Joy, and Najmul Hossain Shanto in quick fashion to put themselves on the brink of a 2-0 triumph.
Bangladesh managed to hold off the Proteas attack for much of the morning, reaching 192 without any further losses through the efforts of Yasir Ali (46) and Mushfiqur Rahim (51), but Maharaj's dismissal of Ali was the catalyst for a fine display of bowling from the hosts.
One day after producing the best batting performance of his Test career to drag South Africa to 453 in their first innings, Maharaj removed Mehidy Hasan Miraz (11), while Harmer dismissed Mushfiqur, Taijul Islam (five), and Ebadot Hossain, the last of the trio for nought.
The hosts went in search of quick runs when they picked up the bat, reaching 60 before captain Dean Elgar was dismissed by Taijul for 26.
Erwee, Verreynne and Bavuma (30) then posted decent returns to set the tourists a mammoth target, before Elgar declared in hope of a rapid victory.
Bangladesh's second attempt with the bat began in even worse fashion than their first, with Hasan Joy caught by Wiaan Mulder from Maharaj's first ball.
Maharaj and Harmer claimed another wicket apiece before the day was through, with the former sending Hossain Shanto for just seven runs and Harmer dismissing Iqbal for 13.
The hosts now appear certain to clinch the series on day four, with the below-par tourists needing 386 to level the series.
Maharaj superb once more
Having recorded just his fourth Test half-century to put South Africa in a commanding position on day two, the 32-year-old spinner starred in more typical fashion on day three.
He set the home attack on their way by adding two more first-innings wickets, before claiming two dismissals for just 17 runs as the visitors saw their top order decimated later in the day.
Harmer gets in on the act
Harmer was also outstanding with the ball, claiming the other three wickets at the end of Bangladesh's first innings before wrapping up a fine day's work by dismissing Tamim.