Reading had got off to a flying start in the sixth minute when Lee Nogan, receiving the ball from his joint player-manager, Mick Gooding, chipped keeper Andy Petterson from 12 yards.
Nogan was unlucky not to get a second after 64 minutes when he headed Andy Bernal's pinpoint cross on to the bar and, just seconds later, Stuart Lovell's flicked header was just held by Andy Petterson at the foot of a post.
Charlton got the equaliser they deserved after 73 minutes when a defensive mix-up allowed youngster Dean Chandler to head home from close range. Then with just three minutes remaining, Tom Jones, the substitute, sent in an accurate corner from the left and the Welsh international Williams rose to head powerfully past Petterson.
Reading's joint manager, Jimmy Quinn, said: "We've got into the habit of winning; we've won our last four games and it's good to take that into the play-offs."
The Finnish international, Mixu Paatelainen, spared Bolton's blushes with an injury-time equaliser against relegated Burnley for a 1-1 draw at Burnden Park.
Bolton looked set to lose at home for the first time since the second day of the season after their former striker, Tony Philliskirk, had headed Burnley into a 60th-minute lead. But Paatelainen was on hand to glance in an equaliser as Wanderers continued to suffer from a familiar poverty in their finishing.
Jason McAteer hit a post and John McGinlay had a goalbound header saved by Marlon Beresford while Alan Thompson and Mark Patterson both went close.
Barnsley's hopes of sneaking into the play-offs at Tranmere's expense were ended by a 3-1 defeat at Southend. Three goals in as many minutes settled the issue. Neil Redfearn's 72nd minute effort cancelled out Phil Gridelet's first-minute opener but Southend stormed back with goals from Andrew Thomson and Gary Jones.
Watford moved into a creditable seventh place finish after beating the former promotion favourites Derby County 2-1 at Vicarage Road.
Watford scored after 84 seconds through Kevin Phillips who five minutes later had a penalty saved by Steve Sutton. Craig Ramage, however, made no mistake from the spot after 73 minutes against his former club following an equaliser by Mark Pembridge .