Cardiff left it late but kept themselves on course for a Sky Bet Championship automatic promotion place with a 2-0 win at Norwich.
Neil Warnock's side had to dig deep to earn a vital three points at Carrow Road, which moved them above Fulham and 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 ensured Cardiff's two-game losing streak was brought to an end.
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.
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.
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.
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.
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.
GET IN THERE!!!! 👊🏼@pnefc— Seani Maguire (@Seani_Maguire_) April 14, 2018
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.
Sean Maguire missed the game for the Lilywhites with a tight hamstring, but Alan Browne and Greg Cunningham both shone for Alex Neill's side.