Steyn recovered in time to get two early wickets before Tahir, playing his first Test in 11 months, wrecked the middle-order with three wickets for 17 runs.
At the break, Asad Shafiq was unbeaten on nought while Adnan Akmal was out in the last over before lunch, without scoring.
Tahir, born in Pakistan before migrating to South Africa, dismissed Shan Masood (21), Misbah-ul Haq (two) and Akmal in the space of just 11 deliveries.
Steyn, doubtful to play after sustaining injury on Sunday, gave no signs of discomfort as he dismissed Manzoor with a sharp outswinger, caught at gully by Faf du Plessis.
Also Read
Manzoor, who hit a career best 146 in Pakistan's seven-wicket win in the first Test in Abu Dhabi last week, failed to score.
Azhar Ali then put on 38 for the second wicket with Masood before he was trapped leg-before by paceman Morne Morkel for 19.
Steyn returned for his second spell to have Younis, caught behind off a rash shot with the score at 60 before Tahir got two more on the same score.
South Africa were forced to make two changes from the first Test, as star batsman Hashim Amla could not make it after returning home for the birth of his second child.
Amla was replaced by Dean Elgar while left-arm spinner Robin Peterson, who failed to get a wicket in the first Test, made way for Tahir.