Seamer Abu Jayed engineered up a West Indies collapse while spinner Mehidy Hasan finished with five wickets as Bangladesh dismissed the hosts for 354 before lunch on Friday on the second day of the second and final Test in Kingston.
Jayed picked up three of the six wickets to fall while spinner Mehidy snared two off successive balls and finished with figures of 5-93.
Bangladesh, who lost by an innings and 219 runs inside three days in Antigua, were 92-4 at tea in Kingston. Pace ace Shannon Gabriel picked up two wickets in six overs for eight runs.
Starting the day on 295-4, the Windies lost Shimron Hetmyer for 86. The left hander edged a ball from Jayed to keeper Nurul Hasan.
Bangladesh were further buoyed by the dismissal of overnight batsman Roston Chase who was trapped lbw by Jayed.
On a dry pitch, left-arm spinner Taijul Islam removed wicketkeeper Shane Dowrich, caught at cover.
Mehidy then removed Kemo Paul for a duck caught bat-pad. The spinner reached five wickets off the next ball getting Miguel Cummins lbw.
Dilruwan Perera claimed 4-46 as Sri Lanka’s spinners picked up seven of the Proteas’ wickets, turning the tourists’ overnight four for one into a nightmare innings.
The hosts then edged to 111 for four – opener Dimuth Karunaratne adding 60 to his brilliant 158 not out on Thursday – in their second innings at the end of day two, for a 272-run lead.
Veteran spinner Rangana Herath claimed two for 39, with Lakshan Sandakan taking the other wicket from slow bowling. Seamer Suranga Lakmal chipping in by bagging with three important victims of his own.
Captain Faf du Plessis battled to stop the rot with a gritty 49, but South Africa’s second-highest scorer proved Vernon Philander with just 18.
The day started to slip away from the tourists right from the off, with nightwatchman Keshan Maharaj departing for just three to leave South Africa nine for two.
Dean Elgar quickly followed for eight to make it 13 for three, and it became 51 for six before Du Plessis was able to stop the rot, albeit little more than momentarily.
Maharaj was at least able to help the Proteas save some face with the ball, claiming three for 37 from 16 overs as Sri Lanka set about building a victorious position in their second innings.
Kagiso Rabada removed Karunaratne after the opener had built a smart half-century, leaving Angelo Mathews and Roshen Silva at the crease at stumps.
The opener struck 110 off 279 balls to lift the Windies, currently 1-0 ahead in the series, to 295 for four at the close after the Tigers asked them to make first use.
He was well supported by Shimron Hetmyer who hit unbeaten 84. The pair put on a crucial stand of 109 for the fourth wicket before Brathwaite fell to Mehidy Hasan Miraz.
Despite Brathwaite becoming Miraz’s third victim, Hetmyer reached stumps 16 runs short of a maiden Test century.
For Miraz, he removed Devon Smith to a bat-pad catch and then added Kieran Powell to his list after the batsman hit 29 runs in a 50-run stand. Powell was later dismissed after being trapped leg-before.