In only the third minute of the game Paul Downing's innocuous back pass was missed by O'Donnell and the backtracking 'keeper failed to prevent the ball from rolling agonisingly over the line.
Sam Mantom equalised moments later for the Saddlers from a rebound after his first effort was parried away by Declan Rudd.
But Bailey Wright re-established the hosts' lead just before the half-hour mark, heading home Paul Gallagher's inswinging free-kick.
After the interval Gallagher came close to doubling Preston's advantage when his curling effort was saved by O'Donnell and, in the ensuing melee, Craig Davies' header was cleared off the line.
Walsall's misery was compounded after 82 minutes as goalscorer Mantom's high challenge on Joe Garner gave the referee no choice but to issue a straight red card.
That meant Preston held on comfortably for a win which extends their unbeaten league home run to six games while play-off hopefuls Walsall are now winless in their last five.