© PA Photos
Ricardo Fuller had an early chance for the visitors but saw his right-footed shot from inside the box go wide.
However, it was Peterborough who drew first blood at London Road in the 24th minute when Danny Swanson found the target from the edge of the Charlton penalty area.
Lee Tomlin was unlucky not to score just 11 seconds into the second half when his effort from inside the penalty box bounced off the post.
That gave Charlton a lifeline which they gladly took, Johnnie Jackson equalising from inside the area on 55 minutes.
Three minutes later Haynes headed home Michael Morrison's delivery to put the visitors 2-1 up.
However, Peterborough restored parity on 71 minutes through Michael Bostwick, who found the target with a long-range effort.