Nottingham Forest returned to the Premier League for the first time in 23 years with a narrow 1-0 victory over Huddersfield Town in the Championship play-off final on Sunday, courtesy of an own goal from Levi Colwill at Wembley.
Forest had the better of a predictably cagey first period in football's most lucrative fixture, monopolising possession and finally seeing their dominance pay in the dying embers of the half.
Steve Cooper's side had gone closest to opening the scoring through Ryan Yates, who rose to meet James Garner's excellent free kick and sent a glancing header just wide 12 minutes in.
Huddersfield generally sat in deep and attempted to catch Forest on the break. Sorba Thomas looked the most likely to do just that, but he saw a low cross pushed away by Brice Samba on a rare foray forward.
A training ground corner routine brought the Terriers' best opening. Thomas' pinpoint low cross reached Danny Ward and the striker's low effort was deflected beyond the post.
Forest finally eked out a lead two minutes before the break - and it was a Huddersfield player who provided it. Under pressure from Yates, Chelsea loanee Colwill could only divert Garner's cross-shot beyond his own goalkeeper.
Huddersfield were inevitably more adventurous in a second half of few chances, and although they didn't create any clear-cut opportunities, they should have had TWO penalties.
Harry Toffolo was felled by a dangling leg from Jack Colback in the 73rd minute, but rather than point to the spot, referee John Moss booked the Huddersfield defender for a perceived dive and the decision was somehow upheld despite a lengthy VAR check.
Ten minutes later, substitute Max Lowe bundled into the back of Lewis O'Brien - but once again the officials were unmoved.
It finished 1-0 to Forest, who are back in the Premier League for the first time since 1999.
Huddersfield Town vs Nottingham Forest player ratings
1. Huddersfield Town (3-4-3)
GK: Lee Nicholls - 5/10 - Hardly tested throughout, but beaten by his own player.
CB: Tom Lees - 6/10 - Passing wasn't the best but defender stoutly and won the majority of his duels.
CB: Levi Colwill - 4/10 - The Chelsea loanee was unfortunate to divert Garner's strike beyond his own goalkeeper. Solid otherwise and kept Johnson quiet.
CB: Naby Sarr - 4/10 - Lucky to escape a booking for crudely stopping Zinckernagel in full flight. Took a few risks and eventually hooked.
RWB: Pipa - 3/10 - Peripheral in the first half and things didn't really improve after the break. Lost a number of duels.
CM: Lewis O'Brien - 6/10 - His ball-carrying relieved pressure and drew plenty of fouls. Arguably should have had a penalty when Lowe bundled into the back of him.
CM: Jonathan Hogg - 5/10 - Characteristically tenacious before dropping into centre-back.
LWB: Harry Toffolo - 5/10 - Won his duels but often had his work cut out against Djed Spence. Really should have had a penalty but was booked for a dive instead, and VAR somehow didn't overturn the decision.
RW: Danel Sinani - 3/10 - Had the fewest touches in the first half. Saw more of the ball after the break but ineffectual.
ST: Danny Ward - 4/10 - Fed off scraps. Saw one good effort deflect wide from a corner routine.
LW: Sorba Thomas - 6/10 - An attacking bright spark for his side on the break. Put in cross after cross in the second period when shifted to the right.
SUB: Jon Russell (57' for Sarr) - 6/10 - Brought poise and a physical presence to the midfield as Huddersfield imposed themselves in the second half.
SUB: Jordan Rhodes (67' for Ward) - 5/10
SUB: Duane Holmes (67' for Sinani) - 5/10
2. Nottingham Forest (3-5-2)
GK: Brice Samba - 6/10 - Dominated his box. Forced off injured in the final minute. A clean sheet nonetheless.
CB: Joe Worrall - 7/10 - Very solid at the back, battling hard and passing well.
CB: Steve Cook - 7/10 - Used all his experience. Passed crisply to build from the back and won all of his aerial duels.
CB: Scott McKenna - 7/10 - Excellent positioning to get in the way of countless crosses. Good with the ball at his feet to boot.
RWB: Djed Spence - 6/10 - Basically played as a winger at times, although his end product wasn't always the best.
CM: Ryan Yates - 7/10 - The languid midfielder went so close with a glancing header. His pressure forced the own goal.
CM: James Garner - 7/10 - Two excellent deliveries in the first half - the second of which forced the opener. Technically a cut above.
AM: Philip Zinckernagel - 4/10 - Often crowded out in a busy midfield. Booked for persistent fouling. Eventually subbed.
LWB: Jack Colback - 5/10 - Played out of position but looked comfortable. So, so lucky not to be punished after catching Toffolo with a dangling leg in the area.
ST: Brennan Johnson - 5/10 - Some nice touches but largely kept quiet on a day where he was expected to shine.
ST: Keinan Davis - 5/10 - Forced to drop deep to get involved in the game. Good hold-up play but didn't threaten in the box.
SUB: Sam Surridge (66' for Davis) - 5/10 - Worked hard but no clear openings.
SUB: Max Lowe (74' for Zinckernagel) - 5/10 - Another Forest man who was lucky not to concede a penalty.
SUB: Ethan Horvath (90' for Samba) - N/A