Young Nair, playing only his second Test, and Ashwin kept the England bowlers at bay in the second session to take India's total to 582 for five at tea on day four.
England captain Alastair Cook put all his bowlers on job but none of them could break the sixth wicket stand between Nair and Ashwin, who have now added 147 runs.
Thanks to their defiant batting, India now are leading by 105 runs with four session remaining in the series-ending match.
Nair has faced 303 balls in his innings and punished the rival bowlers with 22 fours and a six while Ashwin took 130 deliveries for his knock which has five fours and a six in it.
More From This Section
They added 119 runs in the middle session even as none of the England bowlers got any success.
Murali Vijay (29), who had come down the order at No. 6, was the only batsman dismissed in the morning session as Liam Dawson picked up his maiden wicket in the 124th over after trapping him in front of the wicket.
While Dawson bothered Vijay with his slow deliveries, Broad almost had his man when he induced a slight nick off the Tamil Nadu batsman but umpire Simon Fry felt otherwise and England didn't have any reviews left.
In the next over, Nair blasted Dawson for a six over long-on, while Vijay picked up a boundary off Ben Stokes behind point in the 121st over.
One over later, Nair sliced Stokes behind point to pick up another boundary and along with it, his maiden Test century. He celebrated the achievement by raising his bat.
Ashwin picked up his first boundary when he late cut a Dawson delivery behind point.
(REOPENS DEL21)
Australia's wrecker-in-chief Pat Cummins, who made a spectacular comeback after being in the wilderness for more than five years, was used in two spells but the pacer's fifth wicket eluded him.
Saha, on 19, survived Cummins' first ball of the day with India successfully using the review to deny the pacer. He was given LBW by umpire Chris Gaffaney but the review showed the ball was missing leg stump by a few centimetres.
Approaching his 50, Saha broke the shackles and stepped out to hit Nathan Lyon over midwicket.
Saha was dropped on 51, while trying to cut but beaten by the extra bounce of O'Keefe. Replays showed he had a faint edge only to be dropped by wicketkeeper Matthew Wade.
Pujara, who also has two double tons to his name, posted his second 150 in Tests in 391 balls guiding Lyon for a single as the whole Indian team applauded him at the dressing room.