After Byron Moore gave Crewe a 53rd-minute lead at Gresty Road, half-time substitute Dagnall - a free transfer signing from Barnsley on Thursday - bagged a seven-minute brace to hand the O's their third straight victory and drop the Alex to one off the bottom.
Previous leaders Brentford have slipped to second as Walsall ended their eight-game winning league run with a 1-1 draw at Banks's Stadium.
Clayton Donaldson scored his 14th of the season on the half-hour mark for the Bees, only for Craig Westcarr to nod home the equaliser just before the break.
The Saddlers have now fallen to seventh after 3-0 wins for Rotherham and Peterborough over relegation strugglers Shrewsbury and Tranmere respectively lifted them both into the top six.
The Millers scored all their goals inside the opening 21 minutes at Shrewsbury, with on-loan duo Tom Hitchcock and James Tavernier, along with Ben Pringle, on target to hand Town a sixth straight home defeat.
As for Posh, Britt Assombalonga's brace - with his second from the spot - helped United past Rovers, with Nicky Ajose also scoring for the first time in two years for the club.
Wolves are now five points behind Leyton Orient and remain in third after their game against Crawley at the Checkatrade.com Stadium was postponed on Friday due to a waterlogged pitch.
Fourth-placed Preston, meanwhile, could have closed to within two points of Wolves, but had to settle for a 1-1 draw at Deepdale as Franck Moussa scored in the seventh minute of injury time for visiting Coventry.
Kevin Davies fired the home side in front in the 54th minute, only to then receive a straight red card in the 88th, and with 10 men Preston failed to hold on to the three points.
Stevenage remain rooted at the foot of the table as they suffered a 1-0 home defeat to Notts County, with Callum Ball's 42nd-minute goal lifting the Magpies out of the bottom four.
Bristol City lifted themselves one place up to 22nd as they came from two goals down at home to MK Dons to salvage a point from a 2-2 draw.
Shaun Williams and Ben Reeves put the visitors in control, only for Sam Baldock to score twice in 19 second-half minutes to hand City a share of the spoils.
In the Yorkshire derby at Bramall Lane, Sheffield United and Bradford City also drew 2-2, with the visitors staging their own two-goal comeback after the interval.
Jamie Murphy and Harry Maguire gave the Blades a comfortable margin, but Gary Jones and James Hanson restored parity for the Bantams.
United are only one point and two places off the relegation zone, with Carlisle a point directly above them after they lost 4-2 at home to Colchester.
Sanchez Watt opened the scoring in the 16th minute before an own goal from Magnus Okuonghae three minutes later levelled matters.
Colchester then eased 4-1 ahead with a second from Watt, Marcus Bean and an own goal from Max Ehmer, who then grabbed a late consolation.
Elsewhere Gillingham beat Swindon 2-0 with goals from Leon Legge and Michael Harriman, whilst on-loan defender Jack Grimmer's 53rd-minute strike was enough for Port Vale to defeat Oldham 1-0.
- Sports & Recreation
- Craig Westcarr