The hosts, who went to lunch at 70 for 3 on day two, witnessed a dramatic collapse from 94 for 3 at India's newest Test venue which has seen considerable turn from the beginning.
Opener Lokesh Rahul top-scored with a gritty 64 as O'Keefe returned with career-best figures of 6 for 35.
Earlier, Mitchell Starc claimed the prized scalp of Virat Kohli for a duck . Kohli's dismissal silenced the crowd and marked a rare failure for the Indian skipper who has hit four double centuries since July last year. Kohli's last duck in a Test was against England in August 2014.
Starc, who hit a gritty 61 in Australia's first innings of 260, took two wickets in the space of three deliveries as the tourists made decisive early inroads into the Indian batting line-up.
However Lokesh Rahul stood firm and was unbeaten on 47 at the break, batting alongside Ajinkya Rahane who has so far made six.
Starc's fellow pace bowler Josh Hazlewood made the first breakthrough for Australia by dismissing Murali Vijay for 10 in his first over.
Rahul and Cheteshwar Pujara (6) tried to steady the innings but Starc came back strong in his second spell to reduce the hosts to 44-3.
After getting Pujara caught behind off a sharp rising delivery, Starc then got Kohli to edge a wide delivery to first slip where he was comfortably caught by Peter Handscomb.
Left-arm spinner Steve O'Keefe, who opened the bowling alongside Starc, was largely ineffective on a pitch that has offered turn from the off.
Meanwhile Matt Renshaw, who top-scored for the visitors with 68 after an upset tummy on Thursday, went off the field again after feeling nauseous in the Pune heat and Glenn Maxwell came on as a substitute fielder.
Earlier Indian spinner Ravichandran Ashwin ended Starc's overnight resistance as the visitors were bowled out in the first over of the day.
Starc, who smashed six boundaries and three sixes during his 63-ball blitz, could only add four runs to his overnight score before giving away a catch to mid-wicket for 61.
The match is the first in a four-Test series between the world's two top-ranked sides.
India first innings
105 all out (Rahul 64; O'keefe 6-35, Starc 2-38)
Australia first innings
260 all out
Renshaw 68, Starc 61; Yadav 4-32)