Palace were leading through an early penalty from Darren Ambrose but McDonald, who has struggled with injuries since joining from Norwich in August, fired his second Sky Blues goal with 11 minutes remaining.
The Sky Blues had won their last two home games to boost their survival hopes - but they got off to the worst possible start.
With just a minute and a half on the clock, Jermaine Easter collected a long clearance from Julian Speroni and played in Chris Martin, who turned Nathan Cameron and was sent tumbling to the floor.
City's players protested furiously and referee Mark Brown had a long chat with his assistant before confirming the spot-kick.
Despite the delay, midfielder Ambrose kept his cool to beat home keeper Joe Murphy for his seventh goal of the season.
Coventry had plenty of chances to haul themselves level in the first half but were thwarted by Palace keeper Speroni.
They went straight onto the attack and Richard Keogh played a neat one-two with Clive Platt before forcing a smart save from the Argentinian.
Gary McSheffrey then had the ball in the net after being played in by Gary Deegan but the offside flag had been raised.
Speroni continued to show why he has been named Palace's player of the year three times, pushing away Platt's snap-shot shot before also denying McSheffrey.
Coventry were almost caught out at the other end when Cameron's weak header let in Easter but the striker's shot flew over the crossbar.
Murphy also saved from Mile Jedinak and Martin sliced his shot from Ambrose's corner as Palace threatened before the interval.
City were almost caught out after the break by a quickly-taken Palace free-kick but Murphy saved well from Martin.
Then a mix-up between Keogh and Murphy nearly let in Glenn Murray but the ball rolled out for a goal-kick.
The luckless McSheffrey had the ball in the net for a second time in the 70th minute after a goalmouth scramble but referee Brown blew for a Palace free-kick.
Coventry defender Martin Cranie worked himself a shooting chance but his effort was deflected wide, and from the corner McSheffrey's shot was blocked and Palace smuggled the ball away.
And the equaliser finally came in the 79th minute when Palace failed to clear a corner and the ball rolled to McDonald, whose low shot found the corner of Speroni's net.
City piled forward in the closing minutes but could not find a winner and remain in trouble in the bottom three.