Seamer Lungi Ngidi showed all his guile to take five wickets for 19 runs as South Africa skittled West Indies for 97 and seized the initiative on the first day of the first Test in Saint Lucia on Thursday.
After winning the toss, the home side posted their lowest Test total against South Africa, who reached the close on 128/4 in reply, a lead of 31 runs on a wicket that is proving difficult to score on.
Rassie van der Dussen (34 not out) and Quinton de Kock (4 not out) will resume on the second day, seeking to steady what has been a brittle top six for the touring side in recent times.
West Indies' firebrand teenage fast bowler Jayden Seales – who has only played one previous first-class match – accounted for fellow debutant Keegan Petersen (19) in South Africa's innings.
The impressive Seales (3/34) also removed opener Aiden Markram (60), and another debutant Kyle Verreynne (6), all caught behind the wicket, validating his selection in place of the injured Shannon Gabriel.
South Africa's tight lines and nagging length with the ball starved the West Indies of scoring shots as Ngidi and fellow seamer Anrich Nortje (4/35) claimed nine of the wickets to fall.
Nortje also cracked the helmet of batsman Nkrumah Bonner, who went on to make 10 from 32 balls but was later diagnosed with concussion.
He has been replaced in the game by Kieran Powell, who will bat in West Indies' second innings.