James Beattie's first home start for the Toffees began well, with the club-record £6million striker running rings round the visitors defence.
The former Southampton and Blackburn Rovers forward should have made it 1-0 in the eighth minute when he got on the end of a superb cross from Leon Osman.
Dean Kiely was the last line of defence as Beattie pounced, but referee Howard Webb deemed the burly forward to be offside, and Everton's best chance of going ahead in the first half went begging.
Charlton gradually gained a foothold in the game as sloppy passing by Osman and Marcus Bent saw them give the ball away instead of pushing forward.
Both teams plodded on disinterestedly until Everton's Tony Hibbert was brought down with a two-footed tackle midway inside his own half.
Charlton's Talal El Karkouri was incredibly apologetic to referee Webb, but the damage was done and he was lucky to walk away with just a yellow card.
Everton had a further two attempts before the half-time whistle, but both shots - from hitman Bent and captain Alan Stubbs - were yards wide of the mark.
And the sleepy Everton back four were brought back to reality with a shock when Addicks captain Matt Holland scored just before the interval.
A Jerome Thomas throw-in was picked up by Hermann Hreidarsson. He crossed the ball to the unmarked Holland, who powered home a shot over the Toffees' sleepy defence from 12 yards.
David Moyes' men did their best to try and claw a foothold in the one-sided match early in the second half, substituting a lack-lustre Bent for Duncan Ferguson.
But some questionable decisions by referee Webb and poor passing by Tim Cahill and Osman saw the home side continue to struggle.
It took the substitution of Gary Naysmith for Scotland international James McFadden to inject any real pace into the hosts.
The transformation was almost instant, with Everton's passing improving and their possession of the ball increasing.
The Goodison Park outfit were awarded a string of corners late in the second half and Beattie, Ferguson and McFadden all had plenty of chances to score.
But the pressure came too late as Charlton left Goodison with all three points as they edged ever closer to European football next season.
Judging by Everton's performance though, they will be lucky to stay in fourth position for long.
MAN OF THE MATCH: Danny Murphy (Charlton) – The former Liverpool star was a thorn in Everton's side throughout as he probed and pressed to good effect in midfield.