Striker Wilson opened the scoring in the 25th minute as he stuck out a leg to divert a rebound into the net after Franck Moussa's shot had thundered against the post.
The Sky Blues should have been clear by then, but Wilson fired an early chance off target, while Crewe were lucky when a clearance that hit City's Anton Robinson dropped just wide of the post.
Crewe dominated the second period though, and after Uche Ikpeazu had wasted two great chances, the hosts equalised through Coventry defender Jordan Clarke as he headed into his own net in the 61st minute.
It was no more than Crewe deserved and they could have gone ahead through Matt Tootle's powerful volley and Mark Ellis' blocked effort.
But Wilson stole the points for Coventry in the 81st minute when he broke forward and fired powerfully past Crewe goalkeeper Ben Garratt.
Tootle and Chuks Aneke came close late on for Crewe but could not beat Murphy again.