South Africa once again capitalised on West Indies' batting frailties to take charge of the second Test after Quinton de Kock fell just short of another century on day two.
De Kock made a classy century in a first Test that the Proteas won by an innings and 63 runs at the Daren Sammy National Cricket Stadium and was dismissed for 96 at the same venue on Saturday.
Kemar Roach took 3-45 and Kyle Mayers claimed 3-28 - his best Test bowling figures - as the tourists were bowled out for 298 on the second day in Gros Islet.
The Windies were bowled out for only 149 in reply, losing their last four wickets for only six runs in the space of three and a half overs.
Kagiso Rabada (2-24), Lungi Ngidi (2-27) and Keshav Maharaj (2-47) took two wickets apiece, while Wiaan Mulder took three wickets for only one run late on another miserable day for West Indies - who trail by 149 runs and are facing a 2-0 series defeat.
Roach had Mulder caught behind in his first over of the day and Maharaj fell in the same fashion to Jason Holder after putting on 36 for the seventh wicket with De Kock.
De Kock fell just shy of a hundred when he attempted to slash Mayers for four, Shai Hope taking a simple catch in the gully after the ball looped up off Joshua Da Silva's glove.
Rabada added an unbeaten 21 and then had Kraigg Brathwaite caught behind off the first ball of the Windies' reply and they were in deep trouble on 54-4 when Maharaj removed Mayers.
Jermaine Blackwood (49) and Hope (43) offered some resistance, but West Indies folded and look to be facing a whitewash on home soil in a series they started by only posting a pitiful 97 and 162 in the opening Test.
De Kock falls just short
Wicketkeeper batsman De Kock was named man of the match in the first Test for his magnificent 141.
The explosive left-hander fell agonisingly short of a second successive hundred on the same ground, but his brilliant innings could be decisive.
De Kock struck eight boundaries in another assured, high quality 162-ball knock, having arrived at the crease on day one with work to do at 124-4.
Late Mulder burst sums up Windies' day
The Windies were already on the ropes at 143-6 before Mulder did late damage.
All-rounder Mulder had birthday boy Da Silva caught behind in his first over, then saw the back of Roach and Jayden Seales in the space of three balls.
Blackwood top-edged spinner Maharaj to Dean Elgar, ending a sorry innings that lasted only 54 overs.