While Ravichandran Ashwin finished the day with a spell of 2/44, Mohammed Shami had figures of 2/15.
Earlier, India were bowled out for 307 runs, setting up a target of 323 runs for the hosts.
Cheteshwar Pujara (71) shone once again while Ajinkya Rahane (70) returned to form.
Australia 60-3 after 23.3 overs
WICKET! Ashwin strikes again as he removes Khawaja courtesy a catch by Rohit Sharma.
Australia 44-2 after 16.2 overs
WICKET! Edged and caught by wicketkeeper Rishabh Pant as Mohammed Shami dismisses Marcus Harris.
Australia 28-1 after 12 overs
WICKET! Early blow for Australia as Ashwin sees off Aaron Finch courtesy a catch by Rishabh Pant.
Australia have been set a target of 323 runs on Day four of the first Test against India here on Sunday.
The visitors came out swinging after lunch, but the aggressive approach backfired, with four wickets falling for only four runs. Half-century maker Ajinkya Rahane added just 13 in the second session, falling for 70.
Nathan Lyon claimed six for 122 from 42 overs and Mitchell Starc shrugged off a disappointing first session to finish with three wickets.
India resumed after lunch in a dominant position at 260 for 5 and the aggressive Rishabh Pant smashed three consecutive boundaries and a six off Lyon in the first over after lunch.
His whirlwind innings ended when he holed out in Lyon's next over, ending his knock of 28 off 16 balls.
Wickets tumbled with Lyon picking up Rahane and Mohammed Shami in consecutive deliveries.
It was a contrast to a tough first session for Australia's bowlers. Rahane batted through as India added 109 runs in the 34-over first session.
Rahane and Cheteshwar Pujara shared an 87-run fourth-wicket partnership, the highest of the match. Pujara made 71 off 204 balls, following on in fine style from his first innings century.