Ajinkya Rahane became the fifth Indian to score centuries in both innings of a Test match as they declared on 267-5.
In reply, captain Hashim Amla (23 not out) took 46 balls to score a run, as South Africa made 72 in as many overs.
A 300-plus target has been reached just once on Indian soil, when the home team struck 387-4 to defeat England in 2008.
India resumed 403 runs ahead on 190-4 but skipper Virat Kohli added only five runs to his overnight 83 before a low Kyle Abbott delivery trapped him leg before to end the only century partnership of the series at 154.
Rahane, the only centurion of the series, was not to be denied another hundred, however.
The 27-year-old slog-swept Imran Tahir over mid-wicket for his second six of the innings and flicked Dean Elgar for another to move into the 90s.
He joined Vijay Hazare, Sunil Gavaskar (three times), Rahul Dravid (twice) and Kohli as the only India batsman to reach three figures twice in the same Test match.
South Africa blocked resolutely after left-hander Elgar was caught at slip in the fifth over, with India spinner Ravi Jadeja conceding only 10 runs from his 23 overs.
The usually destructive AB de Villiers maintained the team tactic, using 33 balls to score his first run.
His partnership with the captain did not produce a single run in the first 10 overs, but both batsmen survived to retain their team's hopes of avoiding defeat.
A 3-0 series victory for India would put them second in the world rankings behind the South Africans, who will lose top spot if they lose their next Test series at home to England, which begins on 26 December.
India require eight wickets on the final day to seal a 3-0 Test series win after South Africa closed on 72-2 in pursuit of a remote 481 in Delhi.