Ajay Leitch-Smith stepped off the substitutes' bench to grab all three points for Crewe and end Scunthorpe's four-game unbeaten run.
Scunthorpe had looked the more likely to score before Luke Murphy's penalty hit the post and Leitch-Smith buried the rebound four minutes after coming on.
The Iron's Paul Reid blocked Max Clayton at the near post before Andy Barcham cracked the woodwork at the other end for the visitors as the game got off to a lively start.
Both teams continued to trade blows with Akpo Sodje dragging wide for Scunthorpe before Bradden Inman went close for the Alex with a curling effort.
Scunthorpe goalkeeper Sam Slocombe did well to hold on to a vicious shot from Matt Tootle, while Crewe's Harry Davis almost deflected Mark Duffy's shot into his own net, but goalkeeper Steve Phillips spared his blushes with a superb fingertip save.
After the break Mathias Pogba stuck the ball in net for the home side, but was flagged offside as he buried Clayton's cross.
It was still the visitors who were creating the best openings with Karl Hawley screwing over and Sodje also off target with a shot and a header.
But Crewe took the lead after 75 minutes when Tom Newey was judged to have pushed Byron Moore in the back and Leitch-Smith was first to react to Murphy's missed spot-kick.