Cardiff left it late but kept themselves on course for a Sky Bet Championship automatic promotion place, while Middlesbrough boosted their play-off hopes.
Neil Warnock’s side had to dig deep to earn a vital three points at Norwich, which moved them above Fulham and back into second place ahead of their late kick-off against Brentford.
Kenneth Zohore squeezed the ball past Angus Gunn in the 86th minute before Junior Hoilett’s goal in added time sealed a precious 2-0 win.
Highlights of the Sky Bet Championship match between Norwich City and Cardiff City.
Middlesbrough stormed into the play-off places after coming from behind to beat Bristol City 2-1 at the Riverside Stadium.
Milan Djuric volleyed the visitors into a 13th-minute lead before George Friend levelled for Boro five minutes later.
Highlights of the Sky Bet Championship match between Middlesbrough and Bristol City.
Daniel Ayala then headed home the winner in the 68th minute, moving Middlesbrough up to fifth while also denting Bristol City’s own top-six hopes.
Veteran striker Steve Morison struck his fifth goal of the season for Millwall as they came back to draw 1-1 against fellow play-off hopefuls Sheffield United in the early kick-off.
Leon Clarke opened the scoring for the Blades in the 74th minute, but Morison equalised instantly to grab his side a point.
The sixth-placed Lions remain unbeaten in the league since New Year’s Day and Sheffield United, who are ninth, have not lost at home since late January.
Highlights of the Sky Bet Championship match between Sheffield United and Millwall.
Derby slipped out of the top six, but Burton moved off the bottom and to within five points of safety after a 3-1 victory over the Rams at the Pirelli Stadium.
Liam Boyce tapped home from close range to put the hosts in front after 24 minutes, but their lead did not last long as David Nugent equalised moments later.
Luke Murphy curled a beautiful effort past Scott Carson to restore the Brewers’ lead just before the break and Lucas Akins added a third in the 68th minute.
Highlights of the Sky Bet Championship match between Burton Albion and Derby County.
Oli McBurnie’s added-time equaliser secured a vital 2-2 draw for Barnsley at home to fellow strugglers Bolton.
Gary Gardner scored from 10 yards midway through the first half for the Tykes before Adam Le Fondre levelled from the spot after 82 minutes.
Craig Noone thought he had won it for Bolton three minutes later, but McBurnie had the final say to keep Barnsley within two points of the 21st-placed Trotters.
Sunderland slipped to the foot of the table and remain six points below Bolton after drawing 2-2 at Reading.
Liam Kelly gave the Royals the lead from the penalty spot after Lee Camp brought down Jon Dadi Bodvarsson in the box after 20 minutes.
Paddy McNair fired home a stunning equaliser for the Black Cats just after the break before Lee Cattermole’s first goal since August 2014 put the visitors in front in the 66th minute.
Yann Kermorgant restored parity for Reading with 11 minutes remaining to leave Chris Coleman’s side on the brink with three games left.
Highlights of the Sky Bet Championship match between Hull City and Sheffield Wednesday.
Ben Brereton’s late penalty and Joe Lolley’s goal in added time secured an unlikely 2-1 win for Nottingham Forest against Ipswich, who had led through Grant Ward’s first-half header.
Elsewhere, Callum Robinson’s double sealed a 2-1 win for Preston against QPR, who had Matt Smith on the scoresheet, while Jordan Rhodes scored the only goal in Sheffield Wednesday’s 1-0 win at Hull.