Match ends, Millwall 1, Norwich City 3.
Norwich City restored their two-point lead at the top of the Championship with victory at struggling Millwall.
After early pressure from the hosts, the Canaries went ahead in the 16th minute when Marco Stiepermann was on hand to turn in the rebound after Jordan Archer saved Onel Hernandez's effort.
But the Lions levelled on the stroke of half-time when Steve Morison cleverly flicked on a corner and Shaun Williams headed in off the upright.
Norwich skipper Christoph Zimmermann restored Norwich's lead with a powerful header from a corner and top scorer Teemu Pukki wrapped things up with a fine finish after being played through on goal by Emi Buendia.
Leeds United had gone a point ahead of Norwich by beating West Brom 4-0 on Friday, but Daniel Farke's side showed their mettle in south-east London to regain top spot.
But the visitors could have gone behind early on as Jake Cooper had a header blocked, and another effort was cleared off the line,
They asserted their dominance in the second half, with Pukki netting his 24th league goal of the season with 11 minutes remaining to secure a fifth win in six league games.
The Finn's goal proved important as Norwich keeper Tim Krul pulled off a smart double-save to deny Morison and Mahlon Romeo before Aiden O'Brien shot wide.
Millwall, who have won just one of their past nine in the Championship, are now just one point above the relegation zone after Reading and Rotherham both won.
Millwall boss Neil Harris: "The league's the best it's ever been in my opinion, with the strength in depth of the teams.
"It's now about us taking the responsibility, getting the results and not relying on other results to bail us out.
"Bolton's a much bigger game for us than playing Brighton in the FA Cup. We aren't going to win the FA Cup. Staying in the Championship is our priority and I know that's the mindset of the players as well."
Norwich manager Daniel Farke told BBC Radio Norfolk: "After we were leading 1-0 in the first half we were a bit too sloppy in our passing and didn't speed up our game enough to keep them away from our goal, so we weren't at our best.
"We were able to speed up our game in the second half, but even then there were moments when you have to defend and dig in and that's what we did.
"We enjoy our flying moments at the moment and we know it's no coincidence we are in this position after 35 games because there are reasons to be confident, but we are also pretty grounded because we have to work hard for each and every point."
- 3MeredithBooked at 32minsSubstituted forO'Brienat 74'minutes
- 8ThompsonBooked at 39mins
- 6WilliamsSubstituted forElliottat 84'minutes
- 12LewisSubstituted forKloseat 88'minutes
- 17BuendíaSubstituted forLeitnerat 85'minutes
- 25HernándezSubstituted forVrancicat 87'minutes
- David Webb
- Shots on Target
Second Half ends, Millwall 1, Norwich City 3.
Attempt saved. Jed Wallace (Millwall) left footed shot from outside the box is saved in the bottom right corner. Assisted by Shaun Hutchinson.
Attempt missed. Mahlon Romeo (Millwall) right footed shot from outside the box is too high. Assisted by Aiden O'Brien.
Attempt saved. Aiden O'Brien (Millwall) right footed shot from a difficult angle on the right is saved in the bottom right corner. Assisted by Mahlon Romeo.
Corner, Norwich City. Conceded by Shaun Hutchinson.
Attempt saved. Teemu Pukki (Norwich City) right footed shot from the right side of the box is saved in the centre of the goal. Assisted by Tom Trybull.
Substitution, Norwich City. Timm Klose replaces Jamal Lewis.
Substitution, Norwich City. Mario Vrancic replaces Onel Hernández.
Kenny McLean (Norwich City) wins a free kick in the defensive half.
Foul by Steve Morison (Millwall).
Attempt missed. Aiden O'Brien (Millwall) right footed shot from very close range is close, but misses to the right.
Attempt saved. Steve Morison (Millwall) left footed shot from the right side of the six yard box is saved in the centre of the goal.
Attempt saved. Mahlon Romeo (Millwall) left footed shot from the right side of the box is saved in the bottom right corner.
Attempt missed. Steve Morison (Millwall) right footed shot from the right side of the six yard box is close, but misses to the left. Assisted by Shane Ferguson with a cross.
Substitution, Norwich City. Moritz Leitner replaces Emiliano Buendía.
Substitution, Millwall. Tom Elliott replaces Shaun Williams.
Foul by Marco Stiepermann (Norwich City).
Aiden O'Brien (Millwall) wins a free kick in the defensive half.
Goal! Millwall 1, Norwich City 3. Teemu Pukki (Norwich City) right footed shot from the centre of the box to the bottom left corner. Assisted by Emiliano Buendía.