Match ends, Derby County 0, Millwall 1.
Jed Wallace's second-half strike eased Millwall's relegation concerns and dented Derby County's Championship play-off hopes.
Wallace scored the only goal on the counter-attack on 71 minutes, the first shot on target for either side in a drab match at Pride Park.
A swift break after a poor Rams free-kick saw Shane Ferguson release Wallace, who scored with a fine left-footed shot from the edge of the box.
Derby, who remain one place and two points outside the play-offs but have now played a game more then sixth-placed Bristol City, did not manage their first effort on target until the 92nd minute.
Lions goalkeeper Jordan Archer had to make a fine stop to keep out Fikayo Tomori's header in a frantic finish.
But Millwall held on for a second away Championship win this season to move up to 19th in the table, five points clear of the relegation zone.
Boos could be heard ringing around the ground following a poor display by the home side, which means they have won just once in four league matches.
The club's recent past has seen them lose form in the second half of the season and miss out on promotion despite being well placed - and a performance lacking creativity and a cutting edge will have done nothing to allay fears of that trend repeating.
But an intriguing set of fixtures over the coming weekend will bring plenty of hope of returning to the top six.
By the time the Rams travel to face fierce rivals and fellow play-off hopefuls Nottingham Forest at the City Ground on Monday, Bristol City will have played away at leaders Norwich City and West Bromwich Albion, in fourth, will have hosted second-placed Sheffield United.
Derby County manager Frank Lampard told BBC Radio Derby:
"We knew it would be tough because Millwall make it difficult for you. They defend deep and they are very organised.
"They stop the game a lot. They play long balls into the box and they are very effective with what they do.
"But we didn't have enough on the ball to win the game. Our quality wasn't good enough.
"There were no surprises in the way Millwall set up but when we had opportunities to move the ball quickly and get it wide we fell slightly short, which made it a frustrating evening."
Millwall manager Neil Harris:
"I sensed that sparkle back about us again - that doggedness and clean-sheet mentality has been there for a few games now.
"I talked to the players about having belief and that clinical edge.
"We have not scored a lot of goals recently in the league so when those moments do come along, you have got to take them.
"It was a great counter-attacking goal but the all-round defensive display is up there with one of the best while I have been in charge. The disciple to stick to the game-plan was first class."
- 6KeoghBooked at 63mins
- 44HuddlestoneBooked at 42minsSubstituted forKingat 73'minutes
- 7WilsonSubstituted forNugentat 86'minutes
- 26ColeSubstituted forJozefzoonat 73'minutes
- 25M Wallace
- 6WilliamsBooked at 87mins
- 44MarshallBooked at 44mins
- 7J WallaceSubstituted forTunnicliffeat 89'minutes
- 9GregorySubstituted forElliottat 75'minutesBooked at 90mins
- James Linington
- Shots on Target
Second Half ends, Derby County 0, Millwall 1.
Tom Elliott (Millwall) is shown the yellow card.
Offside, Millwall. Shane Ferguson tries a through ball, but Tom Elliott is caught offside.
Foul by David Nugent (Derby County).
Jake Cooper (Millwall) wins a free kick in the defensive half.
Foul by Florian Jozefzoon (Derby County).
Ben Marshall (Millwall) wins a free kick in the defensive half.
Attempt blocked. Florian Jozefzoon (Derby County) left footed shot from the centre of the box is blocked. Assisted by Jack Marriott.
Attempt saved. Fikayo Tomori (Derby County) header from the centre of the box is saved in the bottom right corner.
Corner, Derby County. Conceded by Ben Marshall.
Offside, Millwall. Shaun Williams tries a through ball, but Tom Elliott is caught offside.
Substitution, Millwall. Ryan Tunnicliffe replaces Jed Wallace.
Craig Bryson (Derby County) wins a free kick in the defensive half.
Foul by Tom Elliott (Millwall).
Shaun Williams (Millwall) is shown the yellow card.
Craig Bryson (Derby County) wins a free kick on the right wing.
Foul by Ryan Leonard (Millwall).
Substitution, Derby County. David Nugent replaces Harry Wilson.
Hand ball by Craig Bryson (Derby County).