Captain Virat Kohli became the second fastest to reach 25 Test centuries before India's pacers made Australia labour for an overall 175-run lead, leaving the second match evenly poised at the Perth Stadium on Sunday.
Usman Khawaja scored an unbeaten 41 runs as Australia reached 132 for four at stumps on day three. Tim Paine (8 not out) was keeping company at the other end.
Earlier, the Indian skipper scored 123 runs off 257 balls. It was his sixth Test hundred on Australian soil, joining boyhood hero Sachin Tendulkar, and he 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 retired hurt) didn't come out to bat after being hit by Mohammed Shami (2-23) in the 13th over. 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 (1-25).
The opener, dropped on one off Ishant Sharma (1-33) at first slip by Cheteshwar Pujara, adding 26 runs with Khawaja.
Harris was bowled out off Bumrah's delivery 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 (5) was caught behind off Shami.
Australia's lead had barely crossed 100 at that stage, as Khawaja and Peter Handscomb (13) 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 him 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, helping the hosts cross 100 in the 30th over.
Head 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 (5-67) took his 14th five-wicket haul in Test cricket as Australia took a 43-run lead in the first innings.
Post lunch, India's first innings lasted only another 12.3 overs as the lengthy tail refused to wag for the second time this series.
Ishant Sharma (1) was the first to go, offering a simple return catch to Lyon in the second over after resumption of play.
Rishabh Pant (36) changed gears and tried to attack the Australia bowling, adding 25 runs with Umesh Yadav (four not out) for the ninth wicket, before holing out off Lyon again.
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 Indian skipper 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 (2-66) 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 (1-60) 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 (0), again batting ahead of Ishant, edged Lyon behind first ball.