The Valiants looked set to dominate from the start and Lewis Haldane should have opened the scoring in the second minute when put through by Louis Dodds but his shot hit the right post.
The Railwaymen struggled up front all afternoon but took a surprise lead through Shaun Miller.
He scored from four yards in the 35th minute after no one picked up his run to convert a Steven Schumacher cross.
Crewe's lead lasted just over 10 minutes when Richards nodded home from a Kris Taylor corner on the stroke of half-time.
Taylor turned from provider to scorer in the 79th minute after John McCombe nodded the ball into the danger area. The diminutive midfielder took the ball wide before firing home from the tightest of angles to seal the points for Vale.