Steyn caught and bowled captain Denesh Ramdin for 53 five overs from the close to claw back some of the advantage produced by a spirited West Indian batting performance in near perfect conditions at the iconic Newlands ground.
Ramdin looked to be vindicated in his decision to bat first as Leon Johnson, Devon Smith, Marlon Samuels and Jermaine Blackwood weighed in with runs before Steyn claimed his second wicket of the day.
The fast bowler moved past Makhaya Ntini on to 391 Test victims, now only behind Shaun Pollock in the list of South Africa’s all-time best bowlers.
Johnson top-scored for the tourists with 54 off 84 balls, surviving a review by a matter of millimetres when he padded up to an inswinging ball from Morne Morkel when on four.
Ramdin's defiance of the much-vaunted home attack followed similar displays from team mates throughout the opening day.
Samuels was out for 43 after an injudicious shot saw him caught in the covers off part-time bowler Stiaan van Zyl, who claimed a first Test wicket.
Blackwood, recalled to the team, will resume on Saturday on 45 not out.
Steyn, who also had opener Kraigg Brathwaite caught for seven, was overshadowed by debutant Simon Harmer, who finished with figures of three for 67.
The off-spinnner bowled Smith for 47 on the stroke of lunch before having Johnson trapped lbw in the second session. Harmer also claimed the prized wicket of veteran Shivnarine Chanderpaul, who slipped and was stumped for just nine.
Ramdin won the toss for a third time in the series but after opting to bowl first in the last two Tests gambled on the wicket offering a chance for his team to put together a decent showing with the bat.
South Africa won the first Test in the three-match series by an innings and 220 runs in Pretoria but the second Test in Port Elizabeth ended in a rain-affected draw.
Scorecard
West Indies, first innings
K Brathwaite c Elgar b Steyn 7
D Smith b Harmer 47
L Johnson lbw b Harmer 54
M Samuels c Du Plessis b Van Zyl 43
S Chanderpaul st De Villiers b Harmer 9
J Blackwood batting 45
D Ramdin c and b Steyn 53
J Holder batting 5
Extras (lb3, nb2, w8) 13
Total (6 wkts, 90 overs) 276
Fall of wickets: 1-30, 2-80, 3-131, 4-162, 5-172, 6-266
Bowling: Steyn 21-5-59-2, Philander 16-2-54-0, Morkel 18-1-74-0, Harmer 25-5-67-3, Van Zyl 8-2-13-1, Elgar 2-0-6-0
Image: Dale Steyn celebrates after picking up the wicket of Denesh Ramdin
Photograph: Carl Fourie/Gallo Images/Getty Images
South Africa v West Indies, 2nd Test: Du Plessis gets ton before rain stops play
Dale Steyn rips through Windies, Proteas post huge win
Centurion Test: Amla, Zyl punish Windies before rain ends play
SA vs WI second Test drawn as rain washes out final day
Duminy named in T20 squad for West Indies series