South Africa were 206 for three at lunch on Thursday, still 208 behind India's first innings total of 414.
Veteran leg-spinner Anil Kumble and fast bowler Shanthakumaran Sreesanth claimed a wicket each and bowled accurately as the South African innings lost its momentum.
South Africa, seeking a win to break a series deadlock, started the day confidently after resuming on 144 for one with Smith and Hashim Amla pushing the score along steadily before Kumble had Smith caught by a diving Virender Sehwag at short midwicket.
Smith went into the nineties with successive on-drives for four off Zaheer Khan and seemed set to score his first Test century since April 2005.
But with Kumble bowling from around the wicket into rough outside the left-hander's off stump, Smith tried to whip a ball through midwicket and did not get fully to the pitch of the delivery, hitting a low catch to Sehwag.
Smith made 94 in 218 minutes off 141 balls with 14 fours and a six. He and Amla put on 159 for the second wicket.
Sreesanth came on to bowl of his first spell of the day and immediately found an immaculate line and length.
Amla tried to square cut a delivery wide of his off stump but edged a catch to wicketkeeper Dinesh Karthik. He made 63 in 212 minutes off 174 balls with seven fours.
It was Sreesanth's 18th wicket in three matches, equalling the record for an Indian bowler in a series against South Africa. The record was set by Kumble in 1992/93 and equalled by Javagal Srinath in 1996/97.
New batsmen Jacques Kallis and Ashwell Prince were unable to score easily against Kumble and Sreesanth, bowling in tandem, and the scoring rate slowed markedly. Only 29 runs were added in 17 overs after Amla's dismissal.