The West Indies' frailties with the bat were cruelly exposed by the top-ranked South Africans, with Steyn leading the charge as he finished with six for 34 having gone wicketless in the first innings.
The visitors resumed in the morning session on 76 for two in their second innings, still trailing by 275 runs, with hopes of batting deep into the day to save the Test.
But a fired-up Steyn sparked a precession of wickets as the West Indies were bowled out for 131, unable to cope with the hostility of the home quicks.
Steyn had limped off on the third afternoon with a groin problem but showed no signs of discomfort as he steamed in to skittle the West Indies top order in a spell that lasted 90 minutes.
Leon Johnson (39) edged behind to wicketkeeper AB de Villiers, before Shivnarine Chanderpaul (four) tried to evade a short ball that did not get up as high as he expected and gloved the ball to the keeper.
That left the West Indies in trouble, but their situation became a hopeless one when Marlon Samuels looped up a catch for Dean Elgar off a rampant Steyn with his score on 17.
Captain Denesh Ramdin (four), who had called for greater grit and application from the batsmen in the lead-up to the Test, lasted just two balls as Steyn claimed his fourth by inducing an edge off the shoulder of the bat to a leaping De Villiers.
Morne Morkel picked up his second wicket of the innings when he removed Jermaine Blackwood (15), who could only fend a rising delivery to substitute fielder Temba Bavuma at short leg.
The game was up for the tourists and Steyn picked up the final two wickets, with Kyle Abbott taking an easy catch off Sheldon Cottrell at mid-wicket to end the game with bowler Kemar Roach not batting in the innings as he rests his injured ankle.
The West Indies were bowled out twice in the Test in just under 103 overs, leaving them with much to contemplate ahead of the second Test in Port Elizabeth that starts on Boxing day.
Scorecard
South Africa 1st innings 552 for 5 decl
West Indies 1st innings 201
West Indies 2nd innings (Overnight: 76-2)
K. Brathwaite c Petersen b M. Morkel 20
De. Smith c sub b Philander 5
L. Johnson c de Villiers b Steyn 39
M. Samuels c Elgar b Steyn 17
S. Chanderpaul c de Villiers b Steyn 4
J. Blackwood c sub b M. Morkel 15
D. Ramdin c de Villiers b Steyn 4
J. Taylor c Amla b Steyn 9
S. Benn not out 6
S. Cottrell c Abbott b Steyn 4
K. Roach absent injured
Extras (lb-3 nb-1 w-4) 8
Total (all out, 42.3 overs) 131
Fall of wickets: 1-8 De. Smith,2-52 K. Brathwaite,3-87 L. Johnson,4-91 S. Chanderpaul,5-101 M. Samuels,6-105 D. Ramdin,7-117 J. Blackwood,8-121 J. Taylor,9-131 S. Cottrell
Bowling: D. Steyn 8.2 - 2 - 34 - 6, M. Morkel 11.1 - 1 - 43 - 2, V. Philander 7 - 4 - 6 - 1, K. Abbott 3 - 0 - 11 - 0, S. van Zyl 10 - 2 - 22 - 0, D. Elgar 3 - 0 - 12 - 0
Image: Dale Steyn
Photograph: Morne de Klerk/Getty Images
Philander shines as Proteas close in on victory
Jayawardene, Afridi will be most experienced players at World Cup
South African pacer Rababa gets Test call-up for Windies series
Vengsarkar bats for DRS after howlers Down Under
Centurion Test: Amla, Zyl punish Windies before rain ends play