Barnsley were ahead soon after thanks to a dangerous ball from midfielder Scott Golbourne, which Dagnall failed to connect with, but O'Grady bundled in with 16 minutes gone.
Indeed, the Yorkshire side could easily have doubled their lead but for the efforts of Hamer keeping Charlton in the game.
Chris Powell reacted to his side's showing at half time, bringing off Dale Stephens and Dorian Devrite for Jordan Cousins and Leon Cort.
But the changes appeared to be to no avail when O'Grady doubled the hosts' lead 10 minutes into the second half.
However, Cousins fired a left-footed shot that looped past Luke Steele to give Charlton hope.
They were level soon after thanks to Simon Church, who latched onto to a ball over the top to prod the ball past Steele.
It finished level and leaves Barnsley and Charlton without a win this season.