Durban - Ravindra Jadeja claimed his best bowling figures of 6/138 as South Africa were bowled out for 500, a lead of 166, in the first innings the second Test against India in Durban on Sunday.
The Proteas went to tea on 497 for eight, but could only add three runs as their innings was wrapped up quickly after the interval with Jadeja picking up his sixth wicket in the process.
Earlier, Faf du Plessis and Robin Peterson had shared in a 110-run eighth-wicket partnership to put the Proteas in front.
The pair came out after lunch in aggressive mood, looking to pile on the runs and added a further 102 runs in the shortened session.
Peterson, particularly, took the fight to the Indian bowlers smashing 61 off 52 balls including nine boundaries and a six.
He was finally dismissed, skying a delivery from Zaheer Khan with Murali Vijay getting underneath it for a well-taken catch while Du Plessis was run out for 43.
Earlier, Jacques Kallis scored 115 runs and brought up his 45th century to became the third-highest run-scorer in Test history.
Kallis amassed 13289 Test runs -- one more than India's Rahul Dravid.
Sachin Tendulkar held the record at 15921 and Ricky Ponting was second on the all-time list with 13378 runs.
Kallis was out shortly after reaching the milestone to complete Jadeja's five-wicket haul at a cost of 128 runs.
Struggling with cramp and battling to run between the wickets, the 38-year-old attempted to sweep the spinner and only succeeded in getting a top-edge to wicketkeeper MS Dhoni.
Kallis made his way to the changeroom amid a standing ovation from the crowd and was applauded by his team-mates on his walk up the stairs in his final Test match.
Nigthwatchmen Dale Steyn made 44 with a few lusty blows before he was caught behind off Khan.
Scores: South Africa 500 all out (J. Kallis 115, AB de Villiers 74, A. Petersen 62, R. Peterson 61; R. Jadeja 6-138) v India 334 (M. Vijay 97, C. Pujara 70, A. Rahane 51 not out; D. Steyn 6-100).