The visitors bowled out the Proteas for 116 in their second essay in the morning session but in chase of 247 were shot out for 159.
Rabada ran riot with figures of 6 for 50 while Marco Jansen grabbed a couple of wickets. Anrich Nortje and Gerald Coetzee also shared a wicket apiece as well as South Africa grabbed a 1-0 lead in two-Tests series.
The only resistance of note in Windies second innings came from Jermaine Blackwood who made a gutsy 79 before being ninth man out.
The match hurtled to a conclusion with more than two days to spare as the fast bowlers of both teams held sway on a pitch of variable bounce.
West Indies’ Kemar Roach dominated the morning as he took five for 47 as South Africa, resuming on 49 for four, lost their last six wickets for 67 runs.
Wickets continued to fall when the West Indies batted.
Kraig Brathwaite was caught down the leg side off Rabada in the only over before lunch.
Rabada had first innings top-scorer Raymon Reifer caught behind for eight soon after lunch and Marco Jansen took two wickets in his first over.
Tagenarine Chanderpaul was caught off a top-edged pull and Roston Chase was bowled first ball.
When Gerald Coetzee had Kyle Mayers caught at first slip by Dean Elgar for nought, West Indies were 33 for five with three of the top six out for ducks.
Blackwood played aggressively as he and Joshua Da Silva added 58 for the sixth wicket before Rabada had Da Silva caught at third slip by Keegan Petersen for 17 shortly before tea.
There was more resistance from Jason Holder, who scored 18 in a 37-run stand with Blackwood before Rabada struck again, having Holder caught behind.
Blackwood alone took the fight to the South Africans, hitting eight fours and a six in an aggressive half-century that came up from just 51 balls.
Playing with the tail, his scoring rate slowed as he made his way to 79 when he became a fifth victim for Rabada, fending a lifting ball to Aiden Markram at second slip.
From the final ball of the same over, Rabada trapped Kemar Roach leg before wicket to wrap up the match.
Wicketkeeper Da Silva earlier held seven catches in the South African second innings to equal the world Test record for dismissals in an innings, joining Wasim Bari of Pakistan, Bob Taylor of England, Ian Smith of New Zealand and fellow West Indian Ridley Jacobs.
South Africa’s troubles started early when Heinrich Klaasen played a loose drive against Jason Holder and was caught behind for seven in the third over of the morning.
First innings century-maker Markram took his overnight score of 35 to 47 before he was caught behind off Roach’s first ball of the day.
South Africa slumped to 80 for eight, with the West Indies bowlers seldom giving the batsmen a chance to play an attacking shot.
New cap Gerald Coetzee made a spirited 20 off 15 balls, including a six and four off successive balls from Gabriel before Roach wrapped up the innings.
(With inputs from AFP)