Australia were dismissed for 235 just before lunch, with Travis Head top scoring on 72 on a day hit by rain delays, leaving them 15 runs adrift.
India got off to a solid start, with KL Rahul and Murali Vijay enjoying a 63-run partnership. Both failed to fire in the first innings and are battling for one opener’s spot once the injured Prithvi Shaw is fit again.
On a difficult batting track, Josh Hazlewood bowled four straight maidens to keep them contained before they began finding their range.
Rahul hit a big six off Pat Cummins as the pair grew in confidence and they were racing along before Mitchell Starc got enticed Vijay into nicking an attempted drive to Peter Handscomb in the slips and he was out for 18.
Rahul played some audacious strokes, including a reverse sweep, before a loose shot to a Josh Hazlewood ball found a big edge and he was caught behind for 44 by Tim Paine.
The unflappable Pujara crucially survived two decisions by the umpire giving him out, with both reversed on review in a cruel blow to Australia.
In the first, he was initially dismissed caught behind off Lyon on eight, and in the second was adjudged out lbw, also to Lyon, on 17.
Master-blaster Kohli, who emerged to boos from a section of the crowd, shunned his trademark flamboyance to grind out runs before jabbing at a short ball from Lyon and Aaron Finch took an easy catch.
On the way, he reached another milestone, joining a select few Indians — including Sachin Tendulkar and Rahul Dravid — to score 1,000 Test runs in Australia.
Earlier, Australia added just 44 runs to their overnight 191-7.
Batting on his home ground, Head matched his highest Test score but missed out on a century, adding just 11 to his overnight 61.
It signalled a quick end for Australia, with the final wicket falling next ball.
After two days of stifling hot weather, play began 45 minutes late in gloomy conditions, with the Adelaide Oval lights on.
It only lasted 3.4 overs before the drizzle began again and the umpires called them off after Starc was caught behind for 15 by Rishabh Pant, getting an edge to a Jasprit Bumrah delivery.
Play resumed after an hour with Lyon accompanying Head, who looked on track to better his previous best Test score against Pakistan in October before prodding at a Mohammed Shami ball.
Hazlewood padded up but was gone for a golden duck, again to the Shami-Pant combination, leaving Lyon unbeaten after a quick-fire 24.
For India, Ravichandran Ashwin finished with 3-57 and Bumrah had 3-47.