A scrappy game was settled towards the end of the first half, when Charlton’s leading goalscorer Igor Vetokele headed in from close range.
Both sides had experienced mixed fortunes of late, with Reading having won only two from nine league matches. The victories, though, were both 3-0 in their previous home outings against Blackpool and Rotherham.
Charlton’s promising start to the campaign had faded during a poor run of only three wins in 13 league games. But they had lost only two matches this season, the best record in the division.
It made for a cagey start all-round, with Reading threatening mostly through the left-wing raids of Jordan Obita. However, his delivery of a succession of crosses left a lot to be desired and Charlton escaped any serious danger.
Reading grew more confident and created the first chance when Stephen Kelly crossed from the right wing. Glenn Murray rose high but could not keep his header on target.
Obita, still seeing plenty of work on the left, for once decided to cut into the middle. It looked as if he might enjoy more success than he had had with his crosses but a powerful 20-yard drive was blocked by the massed Charlton defence.
Charlton seemed quite happy to sit back but, when they did venture forward, Johann Berg Gudmundsson tested home keeper Adam Federici with a low drive.
And their patient smash-and grab tactics worked a treat when, in the 39th minute, Vetokele flicked a header past Federici from a Chris Solly cross. It was the Angola striker’s eighth goal of the season.
Reading should have equalised on the stroke of half-time but centre-back Michael Hector nodded wide at the far post from an Obita corner when it appeared easier to score.
Charlton again set out their stall to defend in the second half, with Reading comprehensively dominating the play. Murray’s low effort from outside the area was comfortably saved by visiting keeper Stephen Henderson.
Henderson could do little when home midfielder Oliver Norwood took aim from 20 yards, the ball skidding on the wet turf and striking the far post.
Charlton’s rearguard was superbly marshalled by Andre Bikey, the former Reading central defender. The Royals could find no way through and their frustration began to grow.
As Charlton hung on grimly, Reading’s late pressure almost paid off when Murray released Jamie Mackie, but Henderson made a superb save to keep out his fierce effort.
Charlton could have doubled their lead on the break near the end but substitute George Tucudean was twice denied by Federici.