South Africa were 5-299, 35 runs behind India's first innings total of 334, when rain brought an early close.
Kallis and AB de Villiers (74) shared a fourth-wicket partnership of 127 after South Africa lost three wickets for ten runs to be wobbling at 3-113.
Kallis received a standing ovation from the crowd and a guard of honour from the Indians when he walked out to bat after Graeme Smith and Hashim Amla had been dismissed for 47 and three respectively.
Before he faced a ball, Alviro Petersen was caught at slip for 62 off a ball from Ravindra Jadeja which bounced more than Petersen expected.
Left-arm spinner Jadeja put a clamp on the scoring rate and picked up 4-87 in 37 overs.
Fairly early in his innings, Kallis hit two successive lofted drives for four off Jadeja but the spin bowler, who replaced Ravi Ashwin from the team that played in the drawn first Test, was never mastered.
De Villiers continued in a rich vein of form which has taken him to the top of both the Test and one-day international batting rankings. He hit nine boundaries in a 117-ball innings.
But after he was caught at slip off Jadeja, the scoring rate almost ground to a halt with Kallis taking no chances after announcing that he would retire from Test cricket after this match.
It was important from a team point of view, too, that South Africa secured a first innings lead on a pitch on which Jadeja gained turn and occasional unexpected bounce.
Kallis and JP Duminy (28) added 58 runs off 176 balls, a scoring rate of just under two runs an over, as Indian captain MS Dhoni set defensive fields and declined to take the second new ball.
By the close Kallis had been batting for 274 minutes, facing 224 balls and hitting ten fours. He gave a sharp chance to Shikhar Dhawan at silly mid-off against Jadeja when he was on 74.
Smith and Petersen took their opening partnership to 103 from the overnight total of 82 but were unable to bat with the freedom they had displayed on Friday evening.
Jadeja troubled both batsmen before Smith, on 47, went down the wicket and mistimed an attempted hit over midwicket. Dhawan ran back and held a good, diving catch.
Amla was bowled by Mohammed Shami for three when an inswinging delivery straightened past his bat and hit the off stump.