Match ends, Charlton Athletic 0, Reading 1.
Danny Williams' second-half goal bolstered Reading's play-off hopes and heightened Charlton's relegation woes.
The midfielder scored a 74th-minute winner to give Nigel Adkins' side a five-point cushion in sixth place despite having won just three in nine.
Williams' finish from 12 yards, after Danny Guthrie burst from midfield, was the least the visitors deserved.
It was a bad day for Charlton, though, with defeat leaving them just two points off the bottom three.
Granted, Jose Riga's side have two games in hand on the bottom two and one on 18th-placed Barnsley but their inconsistency continues to be a concern. They have won three and lost three of their last six.
Reading, though, are in better shape. Adkins's side have now taken 16 points from 18 on the road since the beginning of February and were always in control of this game.
After a dreary first half, in which the only moments of note were when Charlton midfielder Jordan Cousins shot tamely at Alex McCarthy and Ben Hamer was forced to push away Chris Gunter's cross, the visitors took command.
Williams, Royston Drenthe and Adam Le Fondre all spurned opportunities after the break and Guthrie's fierce free kick was saved splendidly by Hamer.
Reading's pressure deservedly yielded a goal in the 74th minute, though. Guthrie burst from midfield and perfectly delayed his ball to Williams, who rifled the ball into the top-left corner.
Nigel Adkins, Reading manager:
"We'll just focus on the six games left. You can see there's a spirit and a confidence about the players.
"We only lost one game in March so it's not like we've been losing games but there's been too many draws.
"If you give bad goals away like we have done, you won't win games of football - I think that's the top and bottom of it."
Jose Riga, Charlton manager:
"Before the game it was not an easy mission but we did it well - certainly for an hour. I think we had control of the game.
"We didn't really see the difference between a team busy with the play-offs and one busy with relegation.
"I'm sure the players have done what they have to do, but one mistake and you're punished."
- 16WigginsBooked at 39mins
- 4JacksonSubstituted forPetrucciat 66'minutes
- 24CousinsSubstituted forObikaat 82'minutes
- 42AjdarevicSubstituted forGhoochanneijhadat 58'minutes
- 11HarriottBooked at 61mins
- 23WilliamsBooked at 74mins
- 10DrentheSubstituted forMcClearyat 64'minutes
- 9Le FondreSubstituted forRobson-Kanuat 77'minutes
- Andy Madley
- Shots on Target
Second Half ends, Charlton Athletic 0, Reading 1.
Foul by Davide Petrucci (Charlton Athletic).
Daniel Williams (Reading) wins a free kick in the defensive half.
Attempt blocked. Diego Poyet (Charlton Athletic) left footed shot from outside the box is blocked.
Jonathan Obika (Charlton Athletic) wins a free kick in the attacking half.
Foul by Daniel Williams (Reading).
Attempt missed. Reza Ghoochanneijhad (Charlton Athletic) left footed shot from outside the box misses to the right.
Attempt missed. Reza Ghoochanneijhad (Charlton Athletic) left footed shot from outside the box is high and wide to the left from a direct free kick.
Davide Petrucci (Charlton Athletic) wins a free kick in the attacking half.
Foul by Daniel Williams (Reading).
Substitution, Charlton Athletic. Jonathan Obika replaces Jordan Cousins.
Corner, Reading. Conceded by Ben Hamer.
Foul by Rhoys Wiggins (Charlton Athletic).
Garath McCleary (Reading) wins a free kick on the right wing.
Corner, Charlton Athletic. Conceded by Chris Gunter.
Substitution, Reading. Hal Robson-Kanu replaces Adam Le Fondre.
Daniel Williams (Reading) is shown the yellow card for excessive celebration.
Goal! Charlton Athletic 0, Reading 1. Daniel Williams (Reading) right footed shot from the right side of the box to the top left corner. Assisted by Danny Guthrie following a fast break.
Attempt missed. Pavel Pogrebnyak (Reading) left footed shot from the left side of the box is close, but misses to the left. Assisted by Daniel Williams.