De Villiers fell after scoring a fine 74, while Kallis, playing his last Test match, was batting on 61 along with Jean Paul Duminy on 13 as the Proteas reduced the deficit to just 67 runs after the second session's play.
Resuming at 82 for no loss, South Africa lost three wickets in the first session at the expense of 99 runs and 86 runs for one wicket in the second.
In the post-lunch session, it was all hard work for the Indian bowlers as De Villiers and Kallis scored freely for their 127-run stand for the fourth wicket that put South Africa in a firm position.
It was only Jadeja who kept troubling the South African batsmen with sharp turn and odd bounce.
Kallis and De Villiers played sensibly as they helped South Africa recover from a precarious 113/3 to a comfortable position. De Villiers struck nine fours in his 117-ball stay.
At a time when the partnership looked dangerous, Jadeja struck with a fine delivery that pitched on leg and forced De Villiers to play at it and Virat Kohli took an easy catch at first slip.
Earlier in the day, India started the day with Ishant Sharma and Jadeja.
Resuming at 82 for no loss, overnight batsmen Graeme Smith (47) and Alviro Petersen (62) scored runs briskly. But Smith gifted away his wicket while trying a lofty shot off Jadeja. Smith mistimed the shot and Shikhar Dhawan took a great catch running backwards at mid-wicket.
Hashim Amla's poor form with the bat continued as he was bowled by Mohammed Shami with in-swinging delivery for just three runs. It was the third time in the series that Amla was catsled.
Kallis, who has played 166 Tests, walked into the stadium amidst a standing ovation from the crowd and also a guard of honour by the Indian team. Kallis will be ending his Test career at the same venue where he made his debut in white against England in 1995.
But soon after his arrival, he could only see a wicket fall at the other end.
Jadeja struck to get rid of Petersen as South Africa lost two quick wickets with the score struck at 131. Jadeja got the ball to turn away after pitching on the middle-stump. But it was bounce that troubled Petersen as the ball kissed the shoulder of the bat before flying to slips where Murali Vijay took a good catch diving forward.
--IANS (Posted on 28-12-2013)