The winger netted his second of the League Two campaign as Crewe saw their own four-game unbeaten sequence come to an end.
City could have taken an early lead at Gresty Road on Saturday when Gareth Evans’s glancing header was kept out by keeper Adam Legzdins’ superb reaction save.
At the other end Calvin Zola stooped to meet Matt Tootle’s cross but his header was saved by John McLaughlin.
Zola was appealing for a penalty when his goal-bound drive was deflected to safety by Steve Williams’ hand but the referee was unconvinced.
Michael Flynn caught Crewe napping with a quickly-taken free-kick in the 66th minute to pick out the substitute who slipped the ball under the advancing Legzdins.