Pakistan were 70 for four at lunch on Friday, with Ntini and Kallis both taking two wickets.
With the teams locked at 1-1, South African captain Graeme Smith gambled successfully that his fast bowlers would be able to make early inroads on a pitch which he believed had some moisture. All four batsmen dismissed were caught in the slips.
Pakistan made a bright start when nine runs were scored off Dale Steyn's first over, including two fours by Mohammad Hafeez, but the rest of the morning was an uphill struggle for the batsmen.
Hafeez was caught by AB de Villiers at third slip for 10 when he got a thick edge to a lifting delivery from Ntini, who struck again when he had Yasir Hameed caught by Kallis at second slip for seven.
Kallis replaced Steyn and took a wicket in his second over when left-handed opener Imran Farhat (20) was squared up and edged a catch to Smith at first slip.
Younis Khan, one of the heroes of Pakistan's five-wicket win in the second Test in Port Elizabeth, fell for eight when he chased a wide ball from Kallis and De Villiers leapt high to take a spectacular catch at second slip.
Mohammad Yousuf and Pakistan captain Inzamam-ul-Haq survived close lbw appeals off successive balls from Kallis and Andrew Hall before Yousuf briefly relieved the pressure on the batsmen by hooking Kallis for six.
Smith's decision to send Pakistan in was bold on a pitch which seemed likely to give help to the spinners later in the match, particularly at the southern Wynberg end, which was virtually bare. The Kelvin end had a fair covering of grass.
South Africa made three changes, with Boeta Dippenaar coming in as an opening batsman and De Villiers moving down the order to take the place of the suspended Herschelle Gibbs at number six.
All-rounder Shaun Pollock was rested, with Hall taking his place, while Steyn was picked ahead of Andre Nel in a switch of fast bowlers.
Pakistan made one change, with Shahid Nazir replacing injured fast bowler Shoaib Akhtar.
Pakistan 70 for 4 (Imran Farhat 20, Mohd Yousuf 13 n o; Ntini 2 for 24, Kallis 2 for 21) Vs South Africa