Match ends, Millwall 1, Brentford 0.
Aiden O'Brien's early goal earned Millwall victory as Brentford's recent away troubles continued.
The match-winner came after just eight minutes, when Bees keeper David Raya was closed down and O'Brien slotted the loose ball into an empty net.
Brentford's Bryan Mbeumo forced a smart stop from Millwall keeper Bartosz Bialkowski, one of only four shots on target the two sides mustered between them.
Czech teenager Jan Zamburek scuffed wide late on as the Bees' tried in vain to find an equaliser.
O'Brien had scored in Millwall's previous two home games, late on against Nottingham Forest and Barnsley, but the Lions had failed to win either.
This time, their solidity and organisation earned them their first clean sheet in five at The Den in a game where neither goalkeeper was stretched too often.
Brentford have now lost three of their past four away league games, and have not won on the road since their 3-0 success at Wigan on 9 November.
However, they end the decade fourth in the Championship - their highest position in the English football pyramid at the end of a calendar year since World War Two.
Millwall boss Gary Rowett:
"I thought the first half had some really good stuff. It's the first time we've played a five (at the back) system at home; we've obviously played it very effectively away, and I felt as though we nullified their clear chances very well.
"I think Barts (Bartosz Bialkowski) made one good save but other than that I felt we kept them at bay very well and should have had some more opportunities of our own.
"They are a good side, Brentford. For them to be so free-scoring - probably the form team in the division, I'd say - he's (Thomas Frank) done a brilliant, brilliant job.
"I know they had a slow start to the season but they have really kicked into gear so they're a difficult side to stop and it causes you one or two problems in terms of how you structure your own team."
Brentford head coach Thomas Frank:
"We gave them the goal. It's no secret that David made a mistake but I think he's been absolutely amazing this season.
"For me, he's potentially the best keeper in the division. Football is a game of mistakes, that happens, we'll move on.
"I think we've played out from the back so far in, what, 25 games? We made one mistake that cost a goal and I'd happily take that risk because it gives us an advantage.
"The rest of the game we were chasing and Millwall made it difficult for us. We also need to give them a bit of credit for that because normally we are extremely dangerous going forward."
- 6WilliamsBooked at 70mins
- 3M WallaceBooked at 51mins
- 7J WallaceBooked at 23minsSubstituted forSkalakat 87'minutes
- 9BradshawSubstituted forBödvarssonat 80'minutes
- 22O'BrienSubstituted forFergusonat 81'minutes
- 3HenrySubstituted forValencia Castilloat 80'minutes
- 8JensenSubstituted forZamburekat 72'minutes
- 10BenrahmaBooked at 45mins
- 16Valencia Castillo
- 29Bech Sørensen
- Robert Jones
- Shots on Target
Second Half ends, Millwall 1, Brentford 0.
Kamohelo Mokotjo (Brentford) wins a free kick in the defensive half.
Foul by Shane Ferguson (Millwall).
Substitution, Millwall. Jiri Skalak replaces Jed Wallace.
Attempt missed. Jan Zamburek (Brentford) right footed shot from the centre of the box is close, but misses to the left. Assisted by Ollie Watkins with a headed pass.
Substitution, Millwall. Shane Ferguson replaces Aiden O'Brien.
Substitution, Millwall. Jón Dadi Bödvarsson replaces Tom Bradshaw.
Substitution, Brentford. César Joel Valencia Castillo replaces Rico Henry.
Attempt missed. Pontus Jansson (Brentford) header from the centre of the box is high and wide to the right. Assisted by Josh Dasilva with a cross following a corner.
Corner, Brentford. Conceded by Jake Cooper.
Josh Dasilva (Brentford) wins a free kick in the attacking half.
Foul by Aiden O'Brien (Millwall).
Offside, Millwall. Jake Cooper tries a through ball, but Aiden O'Brien is caught offside.
Substitution, Brentford. Jan Zamburek replaces Mathias Jensen.
Foul by Saïd Benrahma (Brentford).
Shaun Williams (Millwall) wins a free kick in the defensive half.
Shaun Williams (Millwall) is shown the yellow card for a bad foul.
Bryan Mbeumo (Brentford) wins a free kick in the defensive half.
Foul by Shaun Williams (Millwall).