Football League Wrap: Millwall climb out of bottom three
Two goals from Stefan Maierhofer inside the opening half hour put Ian Holloway's men in control at the Riverside Stadium.
Although Emmanuel Ledesma pulled one back 10 minutes from time, the visitors held on to move up to 20th, one point clear of the relegation zone.
Millwall's victory completed a miserable day for Barnsley, who went down 1-0 at home to Leeds United thanks to Ross McCormack's 28th league goal of the season.
That result leaves Danny Wilson's side second from bottom and three points from safety.
Birmingham City are just a point above the relegation zone after Matt Derbyshire's second-minute strike saw them fall to a 1-0 defeat at Nottingham Forest.
There is now just one point separating Birmingham in 18th and Blackpool in 22nd, while the race for sixth place looks equally tight.
Forest are ninth, three points adrift of the final play-off berth, while Ipswich Town missed out on the chance to climb into the top six when they lost 3-1 at Watford.
Goals from Albert Riera, Gabriele Angella and Lewis McGugan sealed the win for Watford, and there are five points between Brighton and Hove Albion in sixth and Giuseppe Sannino's men in 12th.
Elsewhere, Leicester City edged closer to the Championship title with a 1-0 win at home to QPR, who saw Benoit Assou-Ekotto sent off late on.
In League Two, Bristol Rovers and Hartlepool United both suffered away defeats to heighten their relegation fears.
Rovers lost 3-2 at Portsmouth, a defeat which leaves them out of the bottom three on goal difference.
Adam Webster put the home side in front on 12 minutes, before Matt Harrold equalised 10 minutes later.
Danny Hollands restored Portsmouth's lead shortly before the break and, although Harrold levelled again almost immediately, Wes Fogden's winner worsened Rovers' plight.
Hartlepool were comfortably beaten 3-0 at Burton Albion, who still harbour hopes of automatic promotion.
Gary Rowett's men lie fifth, four points behind Rochdale in third, while Hartlepool remain 19th, just two points above the bottom two.