Jermaine Beckford added a fifth while Oliver Turton struck in vain for the visitors, who have now won just one of their last six matches.
Preston’s early pressure told in the 11th minute when Garner fired them in front with his low right-foot shot from the edge of the area.
Garner doubled the lead after 24 minutes as he directed Paul Gallagher’s cross back across goal and past keeper Paul Rachubka at the far post.
However, against the run of play, Crewe pulled one back in the 34th minute through Turton, who slotted past Sam Johnstone from 15 yards.
Garner completed his hat-trick after 72 minutes as he curled the ball into the far corner from inside the area and he struck again seven minutes later, tapping home after Beckford’s strike came back off the post.
And Beckford made it five in the 82nd minute, slotting a shot under Rachubka from six yards.