The Royals went ahead when Yann Kermorgant rose highest to head in Liam Kelly's 37th-minute free-kick, but Nelson Oliveira equalised on the hour.
Norwich went down to 10 men eight minutes later when Jonny Howson handballed on the line and, although Kermorgant hit the crossbar with the resulting penalty, Garath McCleary headed in the rebound.
Callum Harriott then added a third in stoppage time as Reading cut the gap to second-placed Brighton to five points.
Huddersfield made it four wins a row and stayed fourth after coming from behind to beat Nottingham Forest 2-1 at the John Smith's Stadium.
Hildeberto Pereira's neat chip against the run of play in the 25th minute put Forest in front, but David Wagner's men hit back with two goals in seven minutes after the break.
Kasey Palmer's header went in off the crossbar and Forest goalkeeper Vladimir Stojkovic, before Michael Mancienne sliced Rajiv van la Parra's cross into his own net
Mancienne's misery was then compounded when he was sent off late on.
Leeds also maintained their impressive form with a 4-1 win at Preston.
It was an eventful first half at Deepdale where Kemar Roofe opened the scoring and then set up Hadi Sacko to put Leeds 2-0 up.
Preston quickly hit back through Marnick Vermijl, but Souleymane Doukara's near-post shot crept in to restore the two-goal advantage.
The hosts then had Jermaine Beckford sent off against his former club in the second half before Pablo Hernandez added a late fourth.
Aston Villa secured a fifth straight home win in front of a bumper crowd at Villa Park, where 41,337 saw Ross McCormack grab the 78th-minute winner against Burton after Leandro Bacuna's opener had been cancelled out by former Villa reject Jamie Ward's flying volley.
Rock-bottom Rotherham gave themselves a glimmer of hope with only their third win of the season after beating relegation rivals Wigan 3-2.
Aymen Belaid, Danny Ward and a Dan Burn own goal put the Millers in control at the break, but goals from Yanic Wildschut and Jordi Gomez set up a tense finish
Brentford salvaged a stoppage-time point from an action-packed and controversial 2-2 draw with Cardiff which exploded into life in the final seven minutes.
Sullay Kaikai struck twice late on to cancel out Peter Whittingham's first-half penalty and an 89th-minute Kenneth Zohore goal.
There was also a thriller at Molineux where winger Ivan Cavaleiro handed manager Paul Lambert his first home win with a late penalty to clinch a 3-2 victory against Bristol City
Dave Edwards had given Wolves an early lead, but City hit back to lead at the break through Tammy Abraham and Aden Flint, only for Helder Costa to volley in an equaliser before Cavaleiro completed the comeback.
Barnsley edged out Blackburn 2-0 at Oakwell thanks to Sam Winnall's 14th-minute header and a Marley Watkins goal in injury time, with Rovers having Darragh Lenihan sent off for a late lunge on Sam Morsy.
Fulham also won 2-0 at Ipswich with Chris Martin's first-half free-kick followed by Ragnar Sigurdsson's header.
Source : PA