Virat Kohli ended his agonising wait for a test century with a painstaking 186 as India racked up 571 to claim a lead of 91 in the fourth and final test against Australia.
The hosts, who lead the series 2-1, strung together six 50-plus partnerships at the top to effectively put themselves in an unbeatable position heading into the final day of the contest.
Having conceded a handy first-innings lead, Australia finished day four on three for no loss.
The touring side sent nightwatchman Matt Kuhnemann to open with Travis Head after in-form opener Usman Khawaja hurt his knee while fielding.
Kuhnemann, who survived 18 balls, was nearly caught on two occasions but Australia somehow saw off the final six overs without any damage.
Earlier, India lost Ravindra Jadeja (28) after resuming on 289-3 but Kohli and KS Bharat denied Australia another success in that slow-moving session.
Todd Murphy (3-113) broke Kohli’s 64-run partnership with Jadeja, who chipped the ball to Khawaja at mid-on.
Kohli was happy to nudge the ball around, while Bharat hit Nathan Lyon for a six before putting his head down and accumulating runs without taking too many risks.
Promoted in the batting order as Shreyas Iyer did not bat because of back pain, Bharat accelerated after the lunch break, hitting Green for back-to-back sixes and following it with a four in a 21-run over.
Bharat fell to Lyon after making 44, but Kohli could not be denied his first test hundred since November 2019.
The right-hander took a single off Lyon to bring up his 75th international century. Kohli kissed the locket of his necklace and looked skywards in a muted celebration.
Patel, who smashed four sixes and five fours in his belligerent 79, continued his red-hot form with the bat, registering his third half-century of the series.
The left-hander smashed Kuhnemann for two sixes in an over and was looking good for a maiden test hundred before he dragged a Mitchell Starc delivery on to his stumps.
Patel’s 162-run stand for the sixth wicket with Kohli was the highest in the Indian innings.
With Ravichandran Ashwin and Umesh Yadav falling in quick succession and Iyer not available to bat, Kohli realised he was running out of partners and tried to accelerate.
He became the last Indian wicket to fall, holing out to Marnus Labuschagne at long-on to depart after a 364-ball knock, which included 15 fours.
Lyon alone bowled 65 of Australia’s 178.5 overs on a flat track where bowlers found little assistance.
India are chasing a victory in Ahmedabad to confirm their place in the final of the World Test Championship against Australia in June.