Norwich need five more points to secure promotion to the Premier League after snatching a dramatic 2-2 draw with Sheffield Wednesday at Carrow Road.
Marco Stiepermann fired the home side in front in the 20th minute, only for Fernando Forestieri to equalise with a goal-of-the season contender, curling an unstoppable shot into the top corner from 30 yards out.
Steven Fletcher put the visitors in front early in the second half in controversial circumstances, Tim Krul saving the initial effort as Fletcher slid in at the far post before the ball bounced back and appeared to hit the striker on the arm before trickling over the line.
However, Mario Vrancic lashed home a free-kick from just outside the area with the last kick of the game to edge his side closer to the top flight.
Norwich are five points clear at the top of the table, but Sheffield United are now their nearest challengers after Leeds slumped to a shock 2-1 defeat at home to 10-man Wigan.
The Blades had moved ahead of Leeds on goal difference after beating Nottingham Forest 2-0 and Marcelo Bielsa’s men were unable to respond, despite playing with an extra man following the 14th-minute dismissal of Cedric Kipre.
Kipre was sent off for a handball on the line and, although Pablo Hernandez hit a post with the resulting penalty, Patrick Bamford’s crisp finish soon broke the deadlock at Elland Road.
However, Wigan responded with a superb counter-attack from a Leeds corner to set up Gavin Massey to equalise and the same player headed what proved to be the winner in the 62nd minute as the visitors’ survival hopes received a huge boost.
Second-half goals from Mark Duffy and Enda Stevens gave the Blades victory over 10-man Forest, who had Yohan Benalouane sent off two minutes into the second half.
At the other end of the table, Bolton’s relegation was confirmed as they went down 2-0 at home to in-form Aston Villa.
Former Watford owner Laurence Bassini agreed a deal to buy Bolton earlier this week, subject to approval from the English Football League.
But Wanderers will be playing League One football next season after second-half goals from Jack Grealish and Tammy Abraham sealed their fate and earned fifth-placed Villa their ninth straight league win.
Middlesbrough moved above Bristol City into the play-off places thanks to 1-0 win over Stoke, Britt Assombalonga scoring the only goal of the game after three minutes.
City had earlier needed a 72nd-minute equaliser from Josh Brownhill to earn a point at home to Reading, who took the lead three minutes into the second half when Yakou Meite converted a slick free-kick routine straight off the training ground.
West Brom remain fourth in the table after edging a five-goal thriller with Hull.
Kieran Gibbs volleyed the hosts in front but Hull defender Todd Kane struck twice in the space of 11 second-half minutes to turn things round.
However, Dwight Gayle levelled almost immediately and then grabbed the winner five minutes from time.
Third-bottom Rotherham’s survival chances suffered a major blow as they lost 4-3 at Swansea, despite twice taking the lead at the Liberty Stadium thanks to goals from Michael Ihiekwe and Matt Crooks either side of an equaliser from Oli McBurnie.
However, Swansea got back on level terms through Barrie McKay and goals from George Byers and a second from McBurnie proved decisive, with Will Vaulks’s volley in off the bar scant consolation for the visitors.
Birmingham and Derby played out an entertaining draw at St Andrew’s, with all four goals coming in the first 28 minutes.
Lukas Jutkiewicz headed in the opener after just two minutes, but Derby equalised shortly after through Martyn Waghorn’s superb lob.
The home side regained the lead through Michael Morrison, but Derby responded once more as Richard Keogh headed in from Ashley Cole’s cross.
Preston enjoyed a comfortable 4-0 victory over relegated Ipswich, Callum Robinson scoring twice in the first 22 minutes and Lukas Nmecha grabbing a brace in the second period.
Blackburn held on to claim all three points with a 2-1 win at QPR, with Danny Graham opening the scoring from the penalty spot and Bradley Dack making it 2-0.
Matt Smith pulled one back for the home side in injury time, but they could not find an equaliser.
Earlier in the day, Josh Dasilva scored his first senior goal as 10-man Brentford drew 1-1 at Millwall to keep their hosts scrapping for their Championship lives.
The 20-year-old former Arsenal trainee levelled superbly within five minutes of Lee Gregory firing the Lions into the lead, but, after Henrik Dalsgaard had seen red for the visitors, neither side could find a winner.