Josh Dasilva scored twice, and Ivan Toney hit his 23rd goal of the season, as Brentford earned the victory which put them top of the Championship.
The visitors had fallen behind to a penalty by Lucas Joao, which David Raya nearly saved, awarded for a challenge on ex-Bee Josh Laurent by Henrik Dalsgaard.
But Dasilva equalised with a stunning left-foot strike before half-time and then put them ahead late on, before Toney made the game safe.
The Bees were second best at times in the match, but finished strongly as they stretched their record unbeaten league run to 21 games.
After a cagey opening with few chances for either side, Reading went ahead from the spot. The penalty decision seemed soft, but Joao’s effort squeezed into the corner.
But Dasilva equalised when he collected a Toney free-kick, cut into the penalty area on the right-hand side, and curled a trademark left-foot shot into the far corner.
Reading had had the better of the first half, and Raya needed to be at his best to save an Omar Richards header and a shot from Laurent, while Ethan Pinnock made a brilliant tackle to deny Joao – all to stop the hosts regaining the lead.
In the second half, Raya confidently collected some corners, to put his Middlesbrough error firmly behind him, but other than that was rarely tested as the Royals stayed on top but around the hour mark, Brentford started to take control.
They had few chances and the match looked to be heading for a draw until two goals in three minutes gave the Bees the victory.
First a deep left-wing Mathias Jensen cross was chested back by Toney for Dasilva to lash into the roof of the net with his right foot.
And then Rafael Cabral spilled a Sergi Canos shot, and Toney tucked away the rebound to put Brentford two points clear of Norwich at the top of the table.
Brentford: Raya, Dalsgaard, Henry, Sorensen, Pinnock, Janelt, Jensen (Forss 90), Dasilva (Zamburek 90), Mbeumo (Canos 64), Fosu (Ghoddos 80), Toney.