England need nine wickets on the final day to take a Test series lead and India will require another famous run chase to go 1-0 up in Chennai after 15 wickets tumbled on Monday.
The tourists bowled India out for 337 at M. A. Chidambaram Stadium after Washington Sundar held them up with an excellent unbeaten 85.
Ashwin made 31 before taking 6-61 as England were bowled out for 178 after the in-form Joe Root - who top scored with 40 - opted against enforcing the follow-on.
India pulled off a big run chase to secure a series win in Australia last month and they will have to repeat those final-day heroics after being set 420 to win on a day which saw Ishant Sharma take his 300th wicket in the longest format.
Jack Leach bowled Rohit Sharma with a peach of a delivery to leave India 39-1 at stumps - 381 runs from their huge target.
England had to be patient for a breakthrough after India resumed on 257-6, Leach ending a seventh-wicket stand of 80 by getting Ashwin for 31 with the new ball - Jos Buttler taking an athletic catch.
Root chose to bat again after a combination of Leach (2-105) and James Anderson (2-46) finished off India's first innings - Ben Stokes taking a sensational slip catch for England's highest Test wicket-taker.
Ashwin generated turn and bounce to get Rory Burns caught by Ajinkya Rahane off the first ball of England's second innings before lunch, and he also saw the back of Dom Sibley (16) following the break.
Ishant snared Dan Lawrence leg before to join the 300 club before Ashwin removed Stokes - caught behind for only seven.
Root, who made a double century in the first innings of his 100th Test, added 40 as England took the lead over 400, with Ollie Pope (28), Buttler (24) and Dom Bess (25) also chipping in.
Ashwin continued to get sharp turn on a deteriorating track as Root kept India in the field in the heat rather than declaring, picking up a 28th five-wicket haul by bowling Jofra Archer and ending the innings when Anderson was caught and bowled.
Leach produced a great delivery to strike Rohit's off stump, but Shubman Gill and Cheteshwar Pujara prevented further damage from being done.
Ashwin delivers, Ishant reaches landmark
Spinner Ashwin bowled 55.1 overs as India were made to toil by a Root-inspired England in the first innings but did not appear to be fatigued as he bowled superbly second time around.
He took advantage of a pitch offering an increasing amount of spin, which should have had Leach and Bess rubbing their hands together. Ishant became the sixth Indian bowler to take 300 Test scalps when Lawrence was his only second-innings victim.
Leach sets England on their way
Leach was given the new ball with Archer as Anderson was overlooked and the left-armer conjured up a perfect delivery to dismiss Rohit, getting one to drift and turn away.
That was the tourists' only breakthrough in 13 overs, but they will be expected to come out firing on the last day.
For in-depth, objective and more importantly balanced journalism, Click here to subscribe to Outlook Magazine