The hosts need 161 runs more for what now seems an improbable victory.
Ben Hilfenhaus [ Images ] was the pick of the Australian bowlers with figures of three for 22, while Doug Bollinger got the other Indian wicket to fall.
Earlier, the Australian second innings folded for 192, giving them an overall lead of 215.
Simon Katich [ Images ] (37) and Michael Hussey [ Images ] (28), both playing their 53rd Test, aggregated 4,000 runs one after the other, the 23rd and 24th players respectively from Down Under to achieve the landmark.
And Zaheer, who had figures of three for 43 in the second essay to follow up on his five-wicket haul in the first, became only the fifth Indian bowler to take 250 Test wickets when he cleaned up Hilfenhaus (6).
It was an intriguing battle between bat and ball, which saw a constant shift in the balance of power. If Australia dominated from the start, India recovered lost ground towards the end, with the quick wickets, which meant that it was all even stevens as the teams headed for lunch.
Ishant opened the bowling with Zaheer but had problems with no-balls to begin with, like he had in the first innings. Both the bowlers proved an expensive proposition for the team early on. The first five overs cost India 41 runs.
Shane Watson [ Images ] (56) continued his good form with a slew of boundaries to begin with, runs which helped Australia make a comfortable start.
Having dominated both the seamers, Watson welcomed Ojha with a boundary towards mid-on. Three balls later, he cleared the distance, his swing over long-on ensuring the visitors their first maximum of the innings.
Simon Katich (37), a mere spectator at the other end as Watson waltzed on, reached a personal landmark albeit with a bit of fortune.
Harbhajan induced an edge off his blade but the ball pierced the keeper and the slip fielder (Dravid) to make its way to the fence. The boundary helped Katich (then on 13) complete 4, 000 Test runs.
In achieving the feat in his 53rd Test, Katich joined the company of 22 fellow-Aussies. In sum, 107 batsmen have achieved the landmark.
Three runs later, Katich reached another milestone. The left-hander became the eighth Australian, and 36th player overall, to surpass the 1,000-run mark in Tests against India. He reached the landmark in his 13th Test against India.
Meanwhile, at the other end, Watson completed his 10th half-century -- his second against India. The all-rounder continued with his good form, following up his three centuries -- two in the tour match.
However, in his hurry he dragged one Ishant delivery onto his stumps, thereby ending a potentially dangerous innings. The first wicket had yielded 87 runs for Australia in quick time, thereby helping them to a solid foundation.
Only their subsequent batsmen couldn't build on it.
Ishant could have had a third wicket as well as he had had Michael Clarke [ Images ] (4) caught, but his bad habit came back to haunt him -- the no-ball. Umpire Billy Bowden had some doubts and asked Clarke to wait, referring to the third umpire (Sanjay Hazare).
And the Kiwi was right. Ishant had crossed the line while delievering the ball. And Clarke survived.
But not for long, though.
Ishant came back an over later to have Clarke caught behind. The Delhi [ Images ] bowler had come back with a vengeance in his second spell and brought India back into the match with his effort.
At lunch (after 23 overs), the visitors had scored 100 for three, an overall lead of 123.
Post-lunch session: (65 runs, 26.5 overs, 3 wickets)
The second session began on a tentative note for the visitors, with Michael Hussey (28) surviving a loud leg before appeal (off Ishant). Television replays though confirmed the umpire's stand, the ball had actually pitched outside the line.
However, a single in Ishant's next over helped Hussey (then on two) surpass the 4,000 Test runs mark in what was his 53rd Test. He became 24th Australian, and 108th overall, to reach the landmark.
In Ishant's eighth over of the day, Katich survived two loud appeals - the first a leg before, with the ball again having pitched outside the line, and the the second for a caught behind, the ball brushing the shirt en route to the keeper.
Katich and Hussey put together 42 runs for the fourth wicket in close to 20 overs before the former was dismissed, Pragyan Ojha providing India the breakthrough by having him caught behind.
Akin to the first innings, Katich couldn't make most of a good start in the second as well. In came Marcus North (10), and he survived twice in one Harbhajan over, the first a leg before appeal and the second a missed stumping.
However, Hussey was not as fortunate. He was adjudged leg before to Harbhajan, a decision he was certainly not happy about.
In came Tim Paine (9) and he announced his arrival with successive bounadries off Ojha. But Harbhajan struck again to remove North, and Australia were staring down the barrel at tea (on 165 for six).
Australian innings: (27 runs, 11 overs, 4 wickets)
In the day's final session, the Indian bowlers put in an inspired display to dismiss Australia cheaply in their second innings.
The visitors made 192 (in 60.5 overs) for an overall lead of 215.
Zaheer and Ishant were the pick of Indian bowlers with three wickets apiece, while both the spinners, Harbhajan and Ojha, picked two each.
With the fourth ball of the final session, Ojha had Paine caught by substitute Cheteshwar Pujara [ Images ] at silly point.
Two overs later, Dhoni gave the ball back to Zaheer and the left-armer struck with his second delivery, having Mitchell Johnson [ Images ] (3) caught behind.
The Australian innings had, after a bright start, somewhere along the way lost the plot. From 154 for four, the visitors crashed to 170 for eight and it was a matter of time before their innings folded.
India (2nd innings) (55 runs, 17 overs, 4 wickets):
India got off a worst possible start in their second innings. Chasing 216 to win, the hosts lost Gautam Gambhir [ Images ] (0) in Ben Hilfenhaus's fourth ball. The left-hander was adjudged leg before even though replays clealy showed the ball had pitched outside the line.
Bollinger's second over posed a few problems for the Indian batsman. However, in Hilfenhaus's third over -- his figures then read 2-2-0-1 -- Virender Sehwag [ Images ] (17) cut loose, smashing the ball to the mid-off fence.
Rahul Dravid [ Images ] (13) also asserted himself briefly, first with a boundary off Bollinger and then two in a Hilfenhaus over. But the former soon had him caught behind.
In came Tendulkar, and he started with a boundary. However, Hilfenhaus dented Indian chances considerably when he had Sehwag caught by Hussey at gully.
India were reduced to 48 for three and then 48 for four with Suresh Raina's (0) dismissal two overs later - caught at slips by North off Hilfenhaus.
Yet again, India's hopes rest on that one man: Sachin Tendulkar.