Steyn mowed down the Pakistan top order to end the session with three for eight runs as the visitors battled to cope with the pace and bounce.
Jacques Kallis (2-11) and Vernon Philander (2-6) also tormented Pakistan as the home side exerted their dominance after being all out for 253 on the opening day.
Steyn dismissed Mohammad Hafeez with his fifth delivery of the day, the opener getting a faint edge through to wicketkeeper AB de Villiers having not added to his overnight six runs.
Debutante Nasir Jamshed (two) survived a TV referral from Vernon Philander when the bowler was convinced he had the batsman lbw, only for hawk-eye to suggest the ball was going over the top.
Two balls later, Steyn got the ball to swing into Jamshed and trapped him leg before. The batsman challenged umpire Billy Bowden's decision but this time hawk-eye had the ball crashing into the stump.
That brought veteran Younis Khan to the wicket but his stay lasted just five balls before he pushed forward to a full Steyn delivery and edged to Graeme Smith at first slip for a duck.
What followed was 41 dot-balls in a row as Azhar Ali (13) and captain Misbah-ul-Haq (12) were busy simply surviving the South African onslaught.
They managed to tentatively push the score on to 36 before Ali received a vicious bouncer from Kallis that was headed for his throat. He tried to get his bat in the way, but could only fend the ball off to de Villiers behind the stumps.
Misbah became Kallis' second victim in controversial circumstances. Bowden gave turned down a caught-behind appeal which South Africa reviewed. There appeared to be no evidence of a nick on Hot Spot but third umpire Steve Davis from Australia chose to overturn the decision.
The session got worse for Pakistan when Asad Shafiq (1) chased a wide delivery from Philander and succeeded in only edging to de Villiers for his fourth catch of the innings.
Two balls later, a reckless Umar Gul (0) flayed at another wide delivery, the edge providing Smith with a comfortable catch in the slips.
Sarfraz Ahmed and Saeed Ajmal, both on one, will resume after the break with Pakistan in danger of recording their lowest ever test score, a paltry 53 against Australia in Sharjah in 2002.