At the break, Rahul was unbeaten on 89 runs, while Cheteshwar Pujara was batting on 11 not out, leaving the hosts trailing by 304 runs in the first innings. They added 21 runs for the second wicket and India scored 113 runs in the morning session.
Starting from an overnight total of 60 without loss, Rahul and Patel extended their opening partnership to 152 runs.
It was the highest stand for the first wicket for India against England in India. The previous best was 135 runs by Sunil Gavaskar and Farokh Engineer in Mumbai in 1973.
Rahul hit two sixes within the first hour of play as India scored at more than four runs per over. India's 100-mark came up in the 30th over as Rahul reached his second Test half-century, and first in India, off 96 deliveries, including three fours and two sixes.
Patel reached his sixth Test half-century off 84 balls. Later, they brought up their 150-partnership off 249 balls.
The left-handed keeper-batsman was then caught at midwicket off Moeen Ali (1-53), as he tried to attack the bowler. Patel scored 71 runs, facing 112 balls and hitting four fours.
It was Patel's highest Test score, exceeding the 69 runs he scored against Pakistan in Rawalpindi in 2004.
India has a winning 3-0 edge in the series.
England 1st innings: 477
India 1st innings: 173-1 in 48 overs (Lokesh Rahul 89 batting, Moeen Ali 1/53).