Crewe Alexandra 2 Tranmere Rovers 1
Rovers had led from the 25th minute through a long-range effort from skipper Antony Kay.
But substitute Grant helped transform the game in the closing stages.
Crewe handed a debut to Everton reserve keeper John Ruddy, but he had little to for much of the afternoon.
He was beaten by Kay's low drive, which flew in off the post, for an interval lead Tranmere just about deserved on the balance of play.
But Crewe thought they were in front in the ninth minute when Clayton Donaldson followed in a long ball from John Brayford which was completely missed by Ian Goodison and keeper Danny Coyne.
Yet Donaldson was adjudged to have handled and Crewe soon found themselves behind.
Ian Moore and Charlie Barnett fired high and wide as the half closed.
Crewe boss Gudjon Thordarson brought on Grant on for youngster Danny Shelley at the start of the second half.
Donaldson forced a save out of Coyne with an angled drive straight from the kick-off.
But Tranmere could have been two up when Chris Shuker dashed off down the left to cross for Edrissa Sonko, who directed an easy header wide at the far post.
Colin Daniel blasted high over as Crewe looked for inspiration and Grant almost provided it when unleashed an effort just wide from 25 yards.
Goodison was stretchered off midway through the half after he came off the worse when making a vital tackle as Daniel streaked into the box.
The loss of the Jamaica centre-half was a turning point as Rovers didn't look as secure after that.
Danny Coyne denied Crewe an equaliser when he dived to his right to palm away Carrington's side-footer.
But the midfielder levelled with seven minutes left when he got on the end of Grant's cross and helped the ball on at the far post.
Then when substitute Calving Zola laid the ball back from the byline, Grant's deflected effort looped in for an 88th minute winner.