South Africa were 76 for four at lunch on Sunday, still needing another 85 to win the match and the series, which is tied at 1-1.
Asif and leg-spinner Danish Kaneria put a clamp on the scoring after Asif dismissed South African captain Graeme Smith and Hashim Amla early in the day.
When Asif was rested half an hour before lunch he had bowled a spell of 11 overs in which he took two wickets for six runs, while South Africa had advanced by just 18 runs in 22.5 overs from their overnight total of 36 for two.
The value of Asif's bowling was shown when he was replaced by Mohammad Sami, whose second ball was punched by Jacques Kallis off the back foot through the covers for the first boundary of the day.
Kallis drove the next ball straight for another four. They were the only boundaries hit during a morning which brought 40 runs in 29.5 overs.
Asif struck with his fourth ball of the morning when Smith advanced down the pitch and tried to force him to the leg-side, missing the ball to be given out leg before.
Hashim Amla was caught behind off Sami four overs later for three.
Kallis and left-hander Ashwell Prince played cautiously against some top-quality bowling by Asif and Kaneria as the total rose painfully slowly.
After Sami conceded nine runs in his only over, Kaneria switched ends after conceding eight runs in 11.5 overs Sunday, with off-spinner Mohammad Hafeez bowling into the large area of rough at the southern Wynberg end.
Kallis was 18 not out at lunch and Prince was on 14.