Match ends, Norwich City 2, Blackburn Rovers 1.
Norwich City have "achieved something really extraordinary" by sealing promotion to the Premier League with victory over Blackburn Rovers, says manager Daniel Farke.
The Canaries needed a point to get over the line and settled any nerves when Marco Stiepermann drilled low into the bottom corner from outside the box.
After Blackburn's Darragh Lenihan escaped with a yellow for a last-man foul on Teemu Pukki, Norwich doubled their lead through Mario Vrancic's sublime 25-yard strike into the top corner.
Lewis Travis soon pulled one back but the hosts comfortably saw out the win, Onel Hernandez's thumping effort against the bar the closest they came to a third.
Farke's side are likely to be joined in the top flight by Sheffield United - whose promotion will be sealed if Leeds United fail to beat Aston Villa on Sunday - with the pair to contest the Championship title on the final day.
A draw at Villa on 5 May will be enough for the Norfolk side to be crowned champions, with the Blades three points behind them.
"It's a moment full of happiness and pride," Farke told Sky Sports. "This feeling is amazing. For me the Championship is the toughest league in the world.
"Each and every game is pretty close so to come out in the top two teams you deserve it.
"I think of how much we grew during the season - we had so much financial pressure on the club and we had to sell some of our best players, so we had to be creative with our recruitment."
Stiepermann's 10th goal of the season was much-deserved as Norwich raced out of the traps in a carnival atmosphere, while Bosnia midfielder Vrancic - making his first start since February - finished ruthlessly from range as Blackburn failed to close him down.
Rovers kept the the Canaries on their toes with a first professional goal for Travis, a side-footed strike that beat Tim Krul, but they could not create another clear-cut chance as they hoped to extend their four-game winning run.
Emi Buendia's bicycle kick forced a save from Jayson Leutwiler and Hernandez struck the woodwork as Norwich expressed themselves in the second half, with victory taking them past the 90-point mark in a league season for only the third time.
Norwich were last in the top flight in the 2015-16 campaign - finishing 19th - and have now been promoted to the Premier League on four occasions.
Pukki leads Canaries' Championship charge
Striker Pukki started just 14 league games during his only previous stint in British football - a two-year spell at Celtic - so some were underwhelmed when Norwich signed him on a free transfer last summer.
But the Finland international has exceeded all expectations, leading the Championship's goalscoring charts with 28 goals and winning Player of the Season at the EFL awards.
The Young Player of the Season gong went to 19-year-old right-back Max Aarons, who has burst onto the scene after only making his senior league debut against Norwich's arch-rivals Ipswich Town in September.
Northern Ireland international Jamal Lewis has also shone on the other side of the backline, with the energetic pair giving Farke's side incredible attacking impetus throughout the campaign.
Diminutive playmaker Buendia has shown a level of touch, skill and decision-making which should see the Argentine thrive in the Premier League, while Christoph Zimmerman has held things together at the back in a side which believes attack is the best form of defence.
The late, late show
Despite doing the business early on against Blackburn, a hallmark of Norwich's run to promotion has been an extraordinary knack of scoring crucial late goals - they have netted 30 times in the league after the 75th minute, eight more than any other side.
The Canaries set the tone with a 94th-minute equaliser at Birmingham on the opening day, with last-gasp goals at home to Millwall, Bolton Wanderers, Nottingham Forest and Sheffield Wednesday all earning them points that would prove pivotal.
The game with Forest on Boxing Day was particularly outstanding, as Norwich recovered from 3-0 down after 76 minutes to draw 3-3, with goals in the 94th and 98th minutes.
It has taken more than simply a never-say-die attitude - fitness, composure and a ruthless streak have made late goals feel an inevitability at times, cheered on by capacity crowds at Carrow Road.
While this is a club which has become used to promotion to the top flight during the Premier League era, the sheer volume of memorable moments this season means supporters are sure to look back on it as one of the club's best ever.
'Norwich won't do what Fulham have done'
Analysis - BBC Radio Norfolk's Chris Goreham
"I think they will stick with their playing style and find players who will fit into that. They won't do what Fulham have done and spend £100m, they're just not in that position.
"They'll have to improve the squad, that's clear, but I don't expect wholesale changes. Norwich City have found in the past that when they have spent big money on players it hasn't always worked.
"I think they'll be careful with the money that they get and trust the players who have got them to where they are."
- 6ZimmermannBooked at 64mins
- 18StiepermannSubstituted forTetteyat 90+2'minutes
- 25HernándezSubstituted forLeitnerat 90+4'minutes
- 22PukkiSubstituted forRhodesat 90+5'minutes
- 26LenihanBooked at 18mins
- 5RodwellSubstituted forConwayat 58'minutes
- 7ArmstrongBooked at 81mins
- 23DackBooked at 53minsSubstituted forChapmanat 71'minutes
- 10GrahamSubstituted forBreretonat 45'minutes
- Andy Madley
- Shots on Target
Second Half ends, Norwich City 2, Blackburn Rovers 1.
Substitution, Norwich City. Jordan Rhodes replaces Teemu Pukki.
Substitution, Norwich City. Moritz Leitner replaces Onel Hernández.
Substitution, Norwich City. Alexander Tettey replaces Marco Stiepermann.
Attempt missed. Joe Rothwell (Blackburn Rovers) right footed shot from the centre of the box is just a bit too high following a corner.
Corner, Blackburn Rovers. Conceded by Ben Godfrey.
Jamal Lewis (Norwich City) wins a free kick in the defensive half.
Foul by Adam Armstrong (Blackburn Rovers).
Adam Armstrong (Blackburn Rovers) is shown the yellow card for a bad foul.
Jamal Lewis (Norwich City) wins a free kick on the left wing.
Foul by Adam Armstrong (Blackburn Rovers).
Marco Stiepermann (Norwich City) wins a free kick in the attacking half.
Foul by Darragh Lenihan (Blackburn Rovers).
Corner, Blackburn Rovers. Conceded by Maximillian Aarons.
Attempt blocked. Harry Chapman (Blackburn Rovers) right footed shot from the left side of the box is blocked. Assisted by Lewis Travis.
Foul by Teemu Pukki (Norwich City).
Amari'i Bell (Blackburn Rovers) wins a free kick in the defensive half.
Attempt missed. Derrick Williams (Blackburn Rovers) header from the centre of the box is high and wide to the left. Assisted by Adam Armstrong with a cross following a set piece situation.
Foul by Marco Stiepermann (Norwich City).