The on-loan Aston Villa man secured all three points in the 18th minute when he converted Chris Humphrey’s cut-back from close range.
The home side could have been in front inside two minutes but Joe Garner could only head straight at goalkeeper Richard O’Donnell.
Minutes later, Walsall again had their goalkeeper to thank for keeping the scores level when he produced a stunning reaction stop to deny Paul Gallagher.
It was all Preston, with another Garner header palmed wide by O’Donnell, before the striker side-footed straight at the keeper after Gallagher had robbed Ashley Grimes.
But the hosts at last got their reward after 19 minutes when Humphrey burst down the right and cut the ball back for Johnson to fire home.
Preston began the second half as they did the first. Just a minute into the second period the impressive Gallagher went agonisingly close to doubling his side’s lead when he rattled the crossbar.
The midfielder then picked out centre-back Tom Clarke from a corner, only to see his header palmed superbly wide by the inspired O’Donnell.