It’s been a strange, hectic and challengins season but it’s mission complete for Norwich City, with a return to the Premier League confirmed with five games remaining.

The Canaries claimed top spot in mid-November in spite of an injury crisis and have maintained remarkable consistency to retain the lead for all but a brief spell since then.

City stuck with Daniel Farke despite a painful top-flight relegation and have been rewarded for that loyalty, with their head coach overseeing a campaign which has mixed superb defensive strength with exciting attacking flair.

It’s the ninth promotion to the top flight in the club’s history and leaves Norwich in a fantastic position to make it a fifth second-tier title as well.

With Swansea and Brentford both drawing in today's early kick-offs, promotion has been confirmed ahead of tonight's Carrow Road clash with Bournemouth (8pm kick-off).

Title hopes have also been strengthened by Watford losing their derby 1-0 at Luton, leaving them eight points adrift in second ahead of their trip to Norfolk on Tuesday (6pm).

As the celebrations get started, here’s a reminder of how it all unfolded...

- SEPTEMBER

Huddersfield Tn (a) - W 1-0 (Idah)

Five minutes after coming off the bench Adam Idah was smiling in the Yorkshire sunshine, after Teemu Pukki had seized on a defensive error to unselfishly tee up the young Irishman in the 80th minute.

Having been relegated amid a horrendous 10-game losing streak, victory tasted particularly sweet at the John Smith’s Stadium, with the hosts working hard to impress new manager Carlos Corberan.

Preston NE (h) - D 2-2 (Pukki, Placheta)

Alex Neil’s visiting team took the lead through a Scott Sinclair penalty but it was cancelled out by a Pukki in the 31st minute, heading a Xavi Quintilla cross goalwards that was fumbled into the net by former City keeper Declan Rudd.

Darnell Fisher reclaimed the lead for North End before the break but the 1,000 season ticket holders allowed to be at Carrow Road, as part of a pilot project, were celebrating as summer signing Prezemek Placheta made up for a glaring miss when he fired home an equaliser in the 85th minute.

The day had an unusual sub-plot as news broke in the morning of Spanish giants making an enquiry for right-back Max Aarons – with new arrival Kieran Dowell also going off injured in the first half and subsequently being ruled out for three months after ankle surgery.

Bournemouth (a) - L 1-0

A dramatic day, with Emi Buendia and Todd Cantwell dropped as Farke felt they had been distracted by the transfer window still being open.

Arnaut Danjuma’s fine finish in the 35th minute was the difference in a hard fought game, with Ben Godfrey making his final appearance ahead of his club-record sale to Everton for an initial £25m, which could rise to £30m.

POSITION: 13th P3 W1 D1 L1 F3 A3 GD 0 Pts 4

- OCTOBER

Derby County (h) - L 1-0

Buendia was back but it proved a frustrating day against a Rams team who were yet to win, despite dominating the game.

Lukas Rupp missed the chance to thwart a counter-attack and conceded a free-kick on the edge of his box, which England and Manchester United legend Wayne Rooney superbly curled into the top corner in the 87th minute

Rotherham Utd (a) - W 2-1 (own goal, Hugill)

With the transfer window closing on the final day of the international break, the game at the New York Stadium would prove something of a turning point, with Tim Krul making a crucial penalty save to stop the hosts going 2-0 up in the first half.

Aarons forced an own goal in the 68th minute and Angus MacDonald was sent off for a dreadful tackle on Oliver Skipp three minutes later as the Millers grew frustrated.

Buendia was then taken out in the box and summer signing Jordan Hugill calmly converted the spot-kick in the fifth minute of injury-time.

It would spark a 10-game unbeaten run despite mounting injury problems, with skipper Grant Hanley returning after his injury problems.

Norwich Evening News: Mario Vrancic scored CIty's late winner against BirminghamMario Vrancic scored CIty's late winner against Birmingham (Image: PA Wire/PA Images)

Birmingham City (h) - W 1-0 (Vrancic)

It was Mario Vrancic to the rescue in the 87th minute, sweeping home from 15 yards after Rupp had regained possession and Adam Idah had charged into the box.

Cantwell was back and the beginnings of an excellent partnership between Hanley and Ben Gibson in central defence was taking shape.

Wycombe Wanderers (h) - W 2-1 (Pukki, Vrancic)

Pukki’s early strike had appeared to have set up a comfortable afternoon against the newly-promoted visitors but the hosts switched off and Scott Kashket equalised in the 14th minute.

It wasn’t until Vrancic came to the fore again in the second minute of injury-time that their resistance was broken.

Brentford (a) - D 1-1 (McLean)

A first visit to the new Brentford Community Stadium saw City trailing at half-time after a goal from Bees striker Ivan Toney midway through the first half.

Fortune favoured the Canaries though, who had been forced to deploy Jacob Sorensen at left-back just minutes before kick-off, after Quintilla had pulled up with hip pain in the warm-up.

Kenny McLean was introduced in the 69th minute and with three minutes remaining he tried his luck from 25 yards and saw his low shot deflect kindly past the keeper to snatch a very welcome point against promotion rivals.

Bristol City (a) - W 3-1 (Pukki 2, Buendia)

The first real statement win of the campaign, as the Canaries roared into a 3-1 lead at the break, with Buendia brilliantly controlling and converting a Gibson pass just before half-time.

The hosts wasted a penalty and two excellent Krul saves were needed but Farke’s team held out to continue building their momentum.

POSITION: 4th P9 W5 D2 L2 F12 A8 GD +4 Pts 17

- NOVEMBER

Millwall (h) - D 0-0

An off night, when the stubborn visitors thwarted the in-form Canaries, whose best chance was Placheta hitting the post in the first half.

Swansea City (h) - W 1-0 (Stiepermann)

Academy talent came to the rescue, with Bali Mumba and Josh Martin introduced in the 68th minute, Mumba replacing stand-in left-back Sorensen and showing real attacking urgency.

The summer signing’s burst led to Marco Stiepermann sweeping home a winner with six minutes remaining against promotion rivals.

Sadly for Mumba a knee injury in training followed and he missed the next two months, with midfielder Sorensen largely continuing at left-back until the loan signing of Dimitris Giannoulis in January.

Middlesbrough (a) - W 1-0 (Pukki)

More than a touch of fortune to this one, with Neil Warnock left fuming as a Marcus Tavernier penalty was ruled out for a highly debatable double touch as he converted a penalty in the 49th minute.

Aarons won City a penalty of their own in the 72nd minute and in-form Pukki made no mistake to send his team top of the table.

Norwich Evening News: Emi Buendia scored but was also sent off as the Canaries won at StokeEmi Buendia scored but was also sent off as the Canaries won at Stoke (Image: PA Wire/PA Images)

Stoke City (a) - W 3-2 (Pukki 2, Buendia)

A dramatic night in the Potteries, with Buendia and Pukki firing the Canaries 2-0 up at the break – but Tim Krul had limped off in the 40th minute and that thigh injury would bring Michael McGovern into action for the next few weeks.

Pukki made it 3-0 just before the hour mark but a naïve second yellow for a high foot from Buendia in the 69th minute saw Stoke pile forward and find two goals – but the leaders clung on to the three points.

Coventry City (h) - D 1-1 (Vrancic)

The injury situation was now a full-blown crisis, with Krul, Pukki Rupp, McLean, Hugill and Cantwell among the 12 players unavailable – with just six substitutes named, five of which were academy youngsters.

Stiepermann was deployed as an emergency striker but Placheta won a penalty which Vrancic converted but the spirited Sky Blues hit back through Max Biamou in the 89th minute.

POSITION: 1st P14 W8 D4 L2 F18 A11 GD +7 Pts 28

- DECEMBER

Luton Tn (a) - L 3-1 (Buendia)

The injury crisis had taken its toll, with 1,000 supporters allowed inside Kenilworth Road to roar on the hosts.

Buendia had equalised in the first half but the Hatters were 3-1 up early in the second half, against a tired-looking Canaries team.

Sheffield Wednesday (h) - W 2-1 (Martin, Aarons)

The first of three home games where 2,000 supporters could attend amid Covid-19 restrictions – and got to witness a storming comeback.

Pukki was back but the Owls led after Josh Windass had headed in a brilliant Adam Reach cross in the 60th minute.

Martin was introduced in the 79th minute, within two minutes he had poked City level after a lovely Vrancic pass.

Two minutes later and the hosts had the lead, Aarons capitalising on Vrancic’s creativity to unleash a wave of relief.

Nottingham Forest (h) - W 2-1 (Sorensen, Buendia)

Cantwell, Dowell and Hugill were back on the bench as the injury crisis started to ease but Sorensen was coping well at left-back and thumped the Canaries ahead just before the break.

Forest equalised in the 73rd minute, Cantwell was swiftly introduced and his urgency gave Buendia a shooting opportunity on the edge of the box, which deflected in with 13 minutes remaining.

Norwich Evening News: Teemu Pukki made it 50 goals in 100 Norwich City games during a 2-1 win at BlackburnTeemu Pukki made it 50 goals in 100 Norwich City games during a 2-1 win at Blackburn (Image: PA Wire/PA Images)

Blackburn Rovers (a) - W 2-1 (Pukki 2)

It was a Pukki Party at Ewood Park, as the Finland striker scored twice to take his club goal tally to 50 goals on the same day he made his 100th appearance.

There was an element of fortune to the second as the Finn converted a Buendia shot cleverly, on a day when Alex Tettey started to make his 250th Canaries appearance.

Reading (a) - W 2-1 (Buendia, Pukki)

The momentum was really starting to pick up after a win against the high-flying Royals, with Buendia’s early goal ruled out by Michael Olise in the 14th minute.

It was that man Pukki though, with a successful penalty early in the second half taking him to eigt goals in eight games for club and country.

Cardiff City (h) - W 2-0 (Buendia, Cantwell)

A fifth consecutive victory ensured Farke’s team would be top of the Championship Christmas tree.

Excellent goals from Buendia and Cantwell in either half continued the surging confidence in attack as belief of a strong promotion chance continued to grow.

Watford (a) - L 1-0

A disappointing Boxing Day as Ismaila Sarr’s goal six minutes before the break saw Watford take the three points, giving new manager Xisco Munoz a good start thanks to their defensive strength.

Queens Park Rangers (h) - D 1-1 (Pukki)

A tale of two penalties and two goalkeepers, as McGovern limped off at the end of the first half and was replaced by youngster Daniel Barden, making his first league start – having started the 3-1 loss at Luton in the League Cup at the start of the season when City had half of their squad missing.

Barden was well protected but Pukki’s penalty in the 75th minute was called out by a Bright Osayi-Samuel spot-kick with six minutes remaining.

POSITION: 1st P22 W13 D5 L4 F30 A20 GD +10 Pts 44

- JANUARY

Barnsley (h) - W 1-0 (Buendia)

Krul was back but still looked a little awkward with his kicking. Buendia didn’t though.

The Argentine brilliantly volleyed in a McLean pass in the 62nd minute to break the resistance of a stubborn Barnsley side that were pushing towards the play-offs.

Cardiff City (a) - W 2-1 (Hanley, Cantwell)

Barden had starred in a 2-0 home win over Coventry in the FA Cup third round and was needed again in Wales with Krul in self-isolation after testing positive for Covid-19.

Grant Hanley’s header and Todd Cantwell’s strike claimed a 2-0 lead in the 22nd minute and although the Bluebirds piled on the pressure and pulled one back through Joe Ralls in the 65th minute, Marlon Pack’s red card cut their fightback short.

Bristol City (h) - W 2-0 (Hugill 2)

With Pukki out injured, Hugill came to the fore with goals in either half, heading the first and turning in an Aarons cross for the second.

An eighth win in 10 games had the Canaries seven points clear of their rivals.

Middlesbrough (h) - D 0-0

Having exited the FA Cup with a 1-0 loss at Barnsley, Boro man-marked the leaders and frustrated them all the way to a goalless draw.

They were helped by Buendia’s second red card of the season in the 67th minute though, again for a second yellow and perhaps a bit harshly, but the creative midfielder had slid into a tackle before trying to pull out.

POSITION: 1st P26 W16 D6 L4 F35 A21 GD +14 Pts 54

- FEBRUARY

Millwall (a) - D 0-0

Another goalless draw against Gary Rowett’s physical Lions, with Giannoulis finding out about the rough side of English football in his first two games.

With no Buendia, the attacking spark wasn’t there, but back-to-back clean sheets minimised the damage.

Swansea City (a) - L 2-0

Buendia was still missing and it was another under-whelming performance, with Swansea scoring either side of half-time through Andre Ayew and Conor Hourihane.

The televised Friday night encounter cut City’s lead to two points, with the Swans having a game in hand.

Stoke City (h) - W 4-1 (Pukki 2, Cantwell, Buendia)

Brentford had won twice since the Canaries’ loss in South Wales, to claim top spot, but their form disappeared as the Canaries rallied.

Nick Powell had made it 2-1 in the 61st minute but the returning Buendia scored a third swiftly and Pukki completed the success with a penalty in the 80th minute. The start of a nine-game winning run.

Coventry City (a) - W 2-0 (Pukki, Buendia)

Familiar names on the scoresheet despite the Sky Blues’ resistance, taking control before the break, as a four-point lead was reclaimed.

Rotherham Utd (h) - W 1-0 (Pukki)

Pukki’s 15th goal of the season was enough to beat the stubborn visitors, as Cantwell’s dummy of a Buendia pass cut their defence open to send the striker clean through.

Birmingham City (a) - W 3-1 (Pukki 2, Skipp)

Harder work than the scroeline suggests, with Pukki scoring early but then wasting a penalty before the Blues equalised.

Pukki reclaimed the lead somewhat fortunately after good work from Buendia and Onel Hernandez but then Rupp surged clear in injury-time and teed up Oliver Skipp for his first goal in senior football.

Wycombe Wanderers (a) - W 2-0 (Pukki, Idah)

Again, not as comfortable as the score suggests, with Pukki not opening the scoring until the 51st minute, teed up by Buendia’s 10th assist of the season.

The fit-again Idah came off the bench and soon made sure of the win, in the 87th minute, bouncing on the loose ball at a corner.

POSITION: 1st P33 W21 D7 L5 F47 A25 GD +22 Pts 70

- MARCH

Brentford (h) - W 1-0 (Buendia)

A big game for both teams and it was that man Buendia proving the difference again.

His left-footed strike in the 26th minute separated the promotion rivals, striking a huge blow to the Bees’ hopes.

Luton Tn (h) - W 3-0 (Pukki 2, Cantwell)

The first signs of some promotion swagger emerging, as the tenacious Hatters were dispensed with.

A 10-point lead was restored, with Pukki doing the damage before the break and Cantwell completing the job in the 73rd minute.

Sheffield Wednesday (a) - W 2-1 (Pukki Cantwell)

The struggling Owls really made City work for this one, leading at half-time almost inevitably through former Norwich loanee Jordan Rhodes.

A vastly improved second-half performance saw Pukki and Cantwell earn the win at Hillsborough.

Nottingham Forest (a) - W 2-0 (Dowell, Pukki)

The ninth successive win sealed a club record as it was the first time a Canaries team have ever won nine successive games in all competitions.

With Buendia unavailable due to his wife giving birth, Rupp and Dowell came to the fore, Rupp setting up both goals and Dowell thumping in an excellent second in just the 13th minute.

Blackburn Rovers (h) - D 1-1 (McLean)

Kenny McLean had the leaders on their way towards victory but Rovers rallied and Sam Gallagher’s header in the 77th minute earned the visitors a point at Carrow Road.

POSITION: 1st P38 W25 D8 L5 F56 A27 GD +29 Pts 83

- APRIL

Preston NE (a) - D 1-1 (Buendia)

The impact of international action was huge, with Aarons and Giannoulis unavailable, Hanley and McLean playing their second game in 48 hours and Skipp only fit enough for the bench.

Despite that, with injuries to Gibson and Christoph Zimmermann bringing 18-year-old Andrew Omobamidele into the mix, it wasn’t until the fourth minute of injury-time that North End found their deflected equaliser.

A cruel away draw but no disaster in the circumstances.

Huddersfield Tn (h) - W 7-0 (Pukki 3, Buendia, Cantwell, Dowell, Hugill)

The Terriers felt the brunt of the Canaries’ frustrations from Good Friday and found themselves 5-0 down at half-time.

Pukki completed his first Championship hat-trick and Hugill completed the rout, to secure City’s first ever win by a seven-goal margin in the second tier.

Derby County (a) - W 1-0 (Dowell)

Dowell’s quite brilliant free-kick gave the Canaries the advantage but Derby really pushed hard for an equaliser.

City just about held out, with Hanley in magnificent form, to hit 90 points and make promotion an inevitability.

POSITION: PROMOTED

1st P41 W27 D9 L5 F65 A28 GD +37 Pts 90

REMAINING FIXTURES

The Canaries now head into tonight’s home clash with in-form Bournemouth (8pm) with their sights firmly set on maintaining their lead over title rivals Watford – ahead of the Hornets coming to Carrow Road on Tuesday.

Watford are eight points behind after losing 1-0 at Luton this afternoon, while draws for Swansea and Brentford at home to Wycombe and Millwall respectively ensured neither can catch City.

The season then finishes with three successive Saturday matches, away to mid-table QPR, at home to play-off chasing Reading and concluding away to another of the play-off contenders, Barnsley.

Then attentions can turn to a busy summer of preparations for a return to Premier League action during the weekend of August 13-15.

- Check back to this website for full reaction throughout today, as well as coverage of the game against Bournemouth this afternoon.