Match ends, Blackburn Rovers 0, Norwich City 1.
Norwich regained top spot in the Championship thanks to Teemu Pukki's late winner at Blackburn.
Pukki's close-range finish took his season's tally to 13 league goals and extended Norwich's unbeaten league run to 11 matches.
The Finland striker had wasted City's best chances up to that point but tucked home Onel Hernandez's cross from close range with just four minutes remaining.
Norwich - who also had two Ben Godfrey efforts disallowed - go two points clear at the top but will be displaced if Leeds win at Aston Villa on Sunday.
Daniel Farke's Canaries have earned plaudits for their entertaining style this season, but this victory proved they could grind out results when required.
They lost Emi Buendia and Moritz Leitner to injury in a fiery first half in which Pukki twice shot wide from decent positions.
Rovers keeper David Raya produced smart saves either side of the break to tip over Marco Stiepermann's long-range strike and Godfrey's powerful header.
On another day, defender Godfrey might have had a hat-trick, but he had a header ruled out for a foul and a close-range finish adjudged offside.
Rovers' best spell came early in the second half when Darragh Lenihan headed over and Bradley Dack was denied by Norwich keeper Tim Krul.
Blackburn have now won just twice in their last 10 games and the defeat meant they slipped to 14th in the Championship.
Blackburn manager Tony Mowbray:
"I could easily have been stood here talking about a 1-0 win or a 0-0 draw but we're frustrated, disappointed, but we move onto the next game.
"They put a lot of work into today's match. We finished really with 10 men. With Harrison Reed, it's difficult to bring him off after you've made the three substitutions.
"He was a standing man really and maybe that was the difference - the inability to cover areas of the pitch that we had done pretty well for 85 minutes.
"With 10 men, we found it difficult because they're a very expansive team. But I'm frustrated that we failed to take one of our chances. It's an opportunity missed."
Norwich head coach Daniel Farke:
"We have had several outstanding performances and brilliant wins, played some nice pieces of football, and had away wins with four goals.
"But my feeling is this is the biggest win during the whole season and really a massive win for us, especially because of the situation we had to handle during the game.
"I think in the end it was a well deserved win, especially for such a young side. Even experienced and successful sides are pretty often struggling in these types of games.
"To win this game in the end against a side that had one loss in the last 31 home games - big, big compliment to Tony and his lads who are doing a fantastic job - it is outstanding for us and a massive win."
- 14MulgrewSubstituted forWilliamsat 45'minutes
- 29EvansBooked at 23minsSubstituted forPalmerat 60'minutes
- 6SmallwoodBooked at 29mins
- 7A ArmstrongSubstituted forBreretonat 73'minutes
- 10LeitnerBooked at 42minsSubstituted forVrancicat 45'minutes
- 17BuendíaSubstituted forHernándezat 21'minutesBooked at 28mins
- 36CantwellBooked at 90mins
- 22PukkiSubstituted forRhodesat 90+2'minutes
- Darren England
- Shots on Target
Second Half ends, Blackburn Rovers 0, Norwich City 1.
Todd Cantwell (Norwich City) is shown the yellow card for a bad foul.
Foul by Todd Cantwell (Norwich City).
Amari'i Bell (Blackburn Rovers) wins a free kick on the left wing.
Substitution, Norwich City. Jordan Rhodes replaces Teemu Pukki.
Attempt blocked. Marco Stiepermann (Norwich City) left footed shot from the centre of the box is blocked. Assisted by Onel Hernández.
Onel Hernández (Norwich City) wins a free kick in the defensive half.
Foul by Richard Smallwood (Blackburn Rovers).
Goal! Blackburn Rovers 0, Norwich City 1. Teemu Pukki (Norwich City) right footed shot from very close range to the bottom right corner. Assisted by Onel Hernández.
Attempt blocked. Onel Hernández (Norwich City) right footed shot from the centre of the box is blocked. Assisted by Marco Stiepermann.
Attempt missed. Ben Brereton (Blackburn Rovers) left footed shot from the right side of the box is close, but misses to the left. Assisted by Ryan Nyambe.
Offside, Norwich City. Marco Stiepermann tries a through ball, but Onel Hernández is caught offside.
Delay over. They are ready to continue.
Delay in match Harrison Reed (Blackburn Rovers) because of an injury.
Substitution, Blackburn Rovers. Ben Brereton replaces Adam Armstrong.
Attempt missed. Danny Graham (Blackburn Rovers) header from the left side of the box misses to the left. Assisted by Richard Smallwood.
Foul by Maximillian Aarons (Norwich City).
Kasey Palmer (Blackburn Rovers) wins a free kick in the defensive half.
Attempt blocked. Marco Stiepermann (Norwich City) right footed shot from outside the box is blocked. Assisted by Onel Hernández.