Match ends, Fulham 1, Reading 2.
A goal in each half from Ovie Ejaria gave Reading a surprise victory at Fulham, who dropped off the top of the Championship table.
Former Liverpool midfielder Ejaria put the Royals in front with a fine curling strike into the top right corner.
The 23-year-old then doubled Reading's lead after the break with a cool turn and finish from Alen Halilovic's clever chipped pass into the box.
Fulham dominated possession throughout and pulled a late goal back through substitute Rodrigo Muniz's header, but Reading held on.
Bournemouth, who won away at Cardiff, moved two points clear at the top with Fulham falling to second.
Fulham will wonder how they failed to take anything from an entertaining game in which they had 25 shots to Reading's eight with Bobby Decordova-Reid and Aleksandar Mitrovic also hitting the post and crossbar.
After Brazilian Muniz scored his first goal for the west London side, fellow substitute Josh Onomah thought he had earned a point in injury-time but his close-range shot was superbly saved by Luke Southwood.
Veljko Paunovic's Reading had struggled for form at the start of the campaign, picking up just four points from their first six matches.
But they have won back-to-back matches with impressive displays against Peterborough in midweek and now at Craven Cottage.
Their first goal was wonderfully executed by Ejaria as the Championship's top scorer John Swift found him just inside the box and he unleashed an unstoppable effort past Paulo Gazzaniga.
Ejaria then showed excellent control and composure to slot past Gazzaniga early in the second half.
Muniz's goal from Mitrovic's flick-on means Reading are still to keep a clean sheet this season but it failed to take the gloss off an excellent win.
Fulham manager Marco Silva told BBC Radio London:
"It's a disappointing afternoon for us, so many chances were created I think we'd be more clinical.
"In this competition if you are not clinical, you have to always keep your balance and not give the chance to them to try to counter attack, because they have quality.
"I think until half-time we created enough chances to score more than one goal and to change the score. Unfortunately, second half, I told our players that we try to go back and score and try to score goals but in the meantime you cannot concede one more because you have to be there in the game.
"Unfortunately, we conceded a goal with one moment that we made some mistakes. At this level we can't and they scored, but the commitment, the desire, the attitude to change things was on the pitch."
Reading manager Veljko Paunovic told BBC Radio Berkshire:
"I believe that today, what I felt was exactly what we needed. The connection between lions on the field and lions in the stands. It's a huge fusion that we needed and it can only happen organically and it happened today.
"How we played on the field, what we showed, what was our message on the field, it was team, all together, executing our game plan.
"I believe fantastic execution in attack, grit and determination everything was there. So it's a special day, great day from that point of view too and I'm very grateful to our fans for helping us today."
- 4OdoiBooked at 65minsSubstituted forOnomahat 71'minutes
- 13ReamBooked at 77mins
- 24SeriBooked at 28minsSubstituted forKebanoat 71'minutes
- 8WilsonBooked at 57mins
- 14De Cordova-ReidSubstituted forMuniz Carvalhoat 55'minutes
- 19Muniz Carvalho
- 3HolmesSubstituted forDrinkwaterat 20'minutes
- 21BabaBooked at 58mins
- 10SwiftBooked at 56mins
- 7HalilovicSubstituted forPuscasat 89'minutes
- 23HoilettBooked at 34minsSubstituted forTetekat 89'minutes
- Steve Martin
- Shots on Target
Second Half ends, Fulham 1, Reading 2.
Attempt blocked. Harry Wilson (Fulham) left footed shot from outside the box is blocked. Assisted by Tim Ream.
Antonee Robinson (Fulham) wins a free kick in the defensive half.
Foul by Dejan Tetek (Reading).
Attempt blocked. Nathaniel Chalobah (Fulham) header from the centre of the box is blocked. Assisted by Ivan Cavaleiro with a cross.
Attempt saved. Josh Onomah (Fulham) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Tosin Adarabioyo.
Foul by Josh Onomah (Fulham).
Dejan Tetek (Reading) wins a free kick in the defensive half.
Offside, Reading. Josh Laurent tries a through ball, but George Puscas is caught offside.
Substitution, Reading. Dejan Tetek replaces David Junior Hoilett.
Substitution, Reading. George Puscas replaces Alen Halilovic.
Foul by Rodrigo Muniz (Fulham).
Michael Morrison (Reading) wins a free kick in the defensive half.
Goal! Fulham 1, Reading 2. Rodrigo Muniz (Fulham) header from the centre of the box to the bottom right corner. Assisted by Aleksandar Mitrovic with a headed pass.
Attempt missed. Aleksandar Mitrovic (Fulham) header from very close range is just a bit too high following a corner.
Corner, Fulham. Conceded by Luke Southwood.
Attempt saved. Aleksandar Mitrovic (Fulham) left footed shot from outside the box is saved in the bottom right corner. Assisted by Harry Wilson.
Corner, Fulham. Conceded by Josh Laurent.
Foul by Antonee Robinson (Fulham).