Match ends, Crewe Alexandra 1, Bolton Wanderers 2.
Bolton fought back from 1-0 down to win at League Two Crewe and reach the second round of the EFL Cup.
Wanderers had deservedly trailed at half-time after Chris Porter's downward header from George Cooper's cross and Porter struck the bar after the break.
But a triple change turned the game in the visitors' favour as Adam Armstrong tapped in his first goal for Bolton.
Derik Osede headed in his first in English football from substitute Filipe Morais' dinked cross to win it late on.
Crewe were on top early on and could have ended the contest before the hour mark, but Championship Bolton finished the stronger after boss Phil Parkinson's 66th-minute substitutions.
Parkinson had made 10 changes to his starting line-up, while Crewe named the same side that drew with Mansfield in the fourth tier on Saturday.
- 4WalkerBooked at 52minsSubstituted forBoweryat 87'minutes
- 14AinleySubstituted forPickeringat 84'minutes
- 21PratleyBooked at 57minsSubstituted forKaracanat 67'minutes
- 2LittleSubstituted forMoraisat 66'minutes
- 18WilbrahamSubstituted forMadineat 66'minutes
- 9Le Fondre
- Mark Heywood
- Shots on Target
Second Half ends, Crewe Alexandra 1, Bolton Wanderers 2.
Attempt missed. George Cooper (Crewe Alexandra) right footed shot from the centre of the box is close, but misses to the left.
Corner, Crewe Alexandra. Conceded by Ben Alnwick.
Corner, Crewe Alexandra. Conceded by Stephen Darby.
Attempt blocked. George Cooper (Crewe Alexandra) right footed shot from the right side of the box is blocked.
Foul by George Cooper (Crewe Alexandra).
Stephen Darby (Bolton Wanderers) wins a free kick on the right wing.
Eddie Nolan (Crewe Alexandra) wins a free kick in the defensive half.
Foul by Gary Madine (Bolton Wanderers).
Substitution, Crewe Alexandra. Jordan Bowery replaces Brad Walker.
Attempt missed. Jem Karacan (Bolton Wanderers) right footed shot from outside the box is high and wide to the right.
Foul by Chris Porter (Crewe Alexandra).
Jack Earing (Bolton Wanderers) wins a free kick in the attacking half.
Substitution, Crewe Alexandra. Harry Pickering replaces Callum Ainley.
Goal! Crewe Alexandra 1, Bolton Wanderers 2. Derik (Bolton Wanderers) header from very close range to the high centre of the goal. Assisted by Filipe Morais following a set piece situation.
Foul by Tommy Lowery (Crewe Alexandra).
William Buckley (Bolton Wanderers) wins a free kick on the left wing.
Foul by Ryan Wintle (Crewe Alexandra).
Jem Karacan (Bolton Wanderers) wins a free kick on the left wing.