The Rams were staring at a third straight defeat after a Danny Haynes wonder-strike put the hosts ahead in the first half.
But after the break Charlton defender Michael Morrison fouled Richard Keogh in the area to earn a second booking and Ward, back after three months out injured, tucked in the spot-kick.
Charlton kicked off on the back of three straight defeats but took the lead when Haynes conjured up a stunning solo goal.
There seemed little danger when the striker collected the ball back in midfield with 19 minutes on the clock.
But he drifted out wide before swiftly cutting back inside and unleashing a rocket from 25 yards into the top corner.
However, Haynes' afternoon was cut short after just half an hour when he pulled up with a hamstring injury and was replaced by Bradley Wright-Phillips
Meanwhile, Derby were keeping Ben Hamer busy in the Charlton goal.
The keeper had already tipped over an early Ben Davies free-kick, and was then called into action to deny Theo Robinson and Nathan Tyson as the Rams pushed for an equaliser.
Yet Charlton could have doubled their advantage before half-time when Yann Kermorgant chipped into the area but Morrison glanced his header wide.
Wright-Phillips was then put through by Johnnie Jackson but Derby keeper Adam Legzdins charged out of his goal to make a fine block, before Lawrie Wilson fired narrowly wide.
Charlton began the second half like they finished the first, with Wright-Phillips crossing for Jackson whose header was off target.
Left-back Cedric Evina then forced Legzdins to tip his fierce drive over the top, and Dale Stephens' volley flew too high after he was teed up by right-back Chris Solly.
The industrious Bradley Pritchard charged the length of the field before winning a free-kick on the edge of the Derby area, from which Jackson was denied by another fine block from Legzdins.
Pritchard went even closer just after the hour mark when he met Wright-Phillips' cross but crashed his shot against the crossbar.
But the match turned in the 69th minute when Morrison, who had been booked in the first half, slid in on Keogh and was shown a second yellow card, followed by a red.
Ward, who had replaced Will Hughes just two minutes earlier, stepped up and sent Hamer the wrong way from the spot.
Derby could have snatched the win with eight minutes to go but John Brayford's header came back off the post.
- Sports & Recreation
- Danny Haynes