Captain Virat Kohli became the second fastest to 25 Test centuries before Usman Khawaja helped Australia extend their lead to 175 runs to give the hosts a slight upperhand at stumps on Day 3 in Perth on Sunday.
Khawaja scored an unbeaten 41 as Australia reached 132 for four at stumps on day three, with captain Tim Paine not out on eight.
Nathan Lyon took five for 67 to help the hosts claim a vital 43-run first innings lead after India were bowled out for 283 in their first innings despite Kohli's century.
The India skipper, who made 123 runs off 257 balls, reigstered his sixth Test hundred on Australian soil to equal the record of boyhood hero Sachin Tendulkar. He also became the second-quickest batsman in Test history to score 25 Test hundreds (in 127 innings) after Sir Donald Bradman's 68 innings.
Post tea, Aaron Finch (25) was forced to retire with injury after being hit by Mohammed Shami, who took two for 23. He retired hurt but scans cleared him of serious damage on his right hand's index finger.
It was a fiery spell of fast bowling from the Indian pacers. Marcus Harris (20) too had been hit on the helmet earlier in the eighth over off Jasprit Bumrah.
The opener, dropped on 1 off Ishant Sharma at first slip by Cheteshwar Pujara, added 26 runs with Khawaja.
Harris was bowled by Bumrah in the 18th over, attempting to leave the ball, assuming it would move away only for it to crash into the stumps. It became two wickets in four overs as Shaun Marsh was caught behind off Shami for five.
Australia's lead had barely crossed 100 at that stage, as Khawaja and Peter Handscomb put on 21 runs. There was a lot of chatter in the middle while the latter was at the crease, owing to controversy over Virat Kohli's dismissal earlier in the day.
Ishant trapped Handscomb lbw in the 26th over as Australia were reduced to 85 for three. The big partnerships weren't coming as Khawaja and Travis Head (19) added another 35 runs, before the latter threw it away just like he did in the first innings, holing out to third man off Shami. Only Khawaja stood tall among the regular wickets and anchored the Australian innings.
Earlier, India lost their last three wickets for 31 runs and were bowled out for 283 runs in their first innings. Nathan Lyon took five for 67 to register his 14th five-wicket haul in Test cricket helping Australia claim a 43-run lead in the first innings.
Post lunch, India's first innings lasted only another 12.3 overs as the tail enders departed cheaply.
Ishant Sharma (1) was the first to go, offering a simple return catch to Lyon in the second over after the lunch break.
Rishabh Pant (36) changed gears and tried to attack the Australia bowling, adding 25 runs with Umesh Yadav (4 not out) for the ninth wicket, before holing out off Lyon again, caught at long-on.
The off-spinner then proceeded to pick his fifth out of seven Indian wickets to fall on the day as Jasprit Bumrah (4) was caught at slip. In doing so, Lyon equalled Sri Lanka's Muttiah Muralitharan with seven five-wicket
hauls against India in Test cricket.
Overall, India lost their last six wickets for 60 runs to hand Australia the advantage.
In their second innings, the hosts' opening pair struggled to get going as the Indian pacers used the new ball to good effect. In the morning session, Kohli scored a masterful hundred as India reached 252 for seven at lunch.
From overnight 172 for three, India made a torrid start to the day as Ajinkya Rahane (51) was caught behind off Lyon on the fourth ball of the first over.
Hanuma Vihari (20) though was up to the task of batting out the next passage of play, as he put on 50 runs with the skipper for the fifth wicket.
He soaked up pressure at one end, even if not scoring too many runs, while Kohli went about his business at the other end as India garnered 42 runs in the first hour of play.
In doing so, Kohli took India past 200 in the 80th over, and then reached his hundred off 214 balls.
This was also his 34th hundred as the India captain across formats, second only to Ricky Ponting's 41 centuries as Australian captain.
The celebrations though were cut short as Australia used the second new ball to good effect with Vihari caught behind off Josh Hazlewood in the 86th over.
Pant then joined his captain in the middle, and played an uncharacteristic innings unlike Adelaide, adding 18 runs for the sixth wicket as India crossed 250 and started closing the gap on Australia's first innings' total of 326.
But Kohli fell before lunch, edging Pat Cummins to second slip where Handscomb just got his fingers under the ball. TV replays were not sufficient enough to overturn the on-field umpire's soft signal of dismissal.
The visitors lost another wicket in this short passage as Mohammed Shami was caught behind off Lyon for a golden duck.