Exeter Chiefs had just enough to keep Racing 92 at bay and clinch their first Champions Cup title in a thrilling final at Ashton Gate.
Luke-Cowan Dickie, Sam Simmonds and Harry Williams barged over to give Exeter a nine-point lead at the break.
But Racing roared back with Simon Zebo’s second try and Camille Chat’s surge bringing them within a point.
Exeter, down to 14 men after Tomas Francis’ late yellow card, held out heroically to lift the title.
A breathless final 10 minutes featured Racing turning down the drop-goal opportunity as they went through the phases within five metres of the line, Exeter replacement Sam Hidalgo-Clyne securing a turnover under the shadow of his own posts and captain Joe Simmonds landing a penalty with the last act of the match.
Even then the drama was not over.
The match clock initially showed that three seconds remained for Racing to restart and mount a final assault. However, after consulting with his team officials, referee Nigel Owens confirmed that the clock had not restarted when Simmonds was lining up his penalty and that he could blow up, sparking delirious celebrations.
The victory marks the culmination of a remarkable decade for Exeter, who won promotion to the Premiership for the first time back in 2010 in a play-off match across Bristol at the city’s Memorial Stadium.
Rob Baxter’s side will attempt to complete a double next weekend when they take on Wasps in the Premiership final.
Business-like Exeter v free-running Racing
The clash of styles was clear as soon as the teams emerged into a coronavirus-enforced empty Ashton Gate.
Racing 92 trotted onto the pitch wearing pink bow-ties, in a nod to the Parisians’ fast-living free-running past.
Exeter marched out in business-like fashion, grim-faced and forward looking, through a gauntlet of their replacements and backroom staff.
Racing brought bursts of colour and panache, but the Chiefs’ mastery of close-range trench warfare ultimately kept them one step ahead throughout a thrilling contest.
Racing scrum-half Teddy Iribaren had the chance to give his side an early platform. Instead he screwed a penalty dead as he aimed for the corner and five minutes later Cowan-Dickie forced his way through the middle of a driven maul for the first try.
Iribaren’s eccentricities continued as he passed blind to put Juan Imhoff under pressure before Russell juggled in his own in-goal area. Racing put themselves under pressure and Exeter gleefully pressed them beyond breaking point.
Sam Simmonds barged through opposite number Antonie Claassen at the end of a series of short-range bursts from his fellow forwards.
Fourteen points ahead with only 16 minutes gone, Exeter chairman Tony Rowe looked like he was struggling to keep his delight in check in the stands.
But Racing refused to go quietly.
Russell’s cut-out pass tempted Tom O’Flaherty out of position and opened a route to the corner for Zebo before Imhoff ghosted through the fringe defence to cut the gap to two points.
Harry Williams crossed on the stroke of half-time for Chiefs but Zebo, out of contract next summer, showed his quality with another powerful finish to keep the French side within a score early in the second half.
Ultimately though, Racing’s errors undermined their brilliance.
Two minutes after Zebo’s second, with the momentum with the French side, Scotland fly-half Russell threw a looping mis-pass just outside his own 22m. It could have sprung a counter-attack. Instead it was picked off by an alert Jack Nowell who put Henry Slade under the posts.
That score moved Exeter to 28 points, a total Racing could never overhaul despite Chat’s bulldozing try and their late pressure.
Russell’s percentages come up short
British and Irish Lions coach Warren Gatland was one of the handful of spectators in attendance at the behind-closed-doors final.
The performance of Russell will have given him plenty to ponder.
The Scotland fly-half’s brilliant chip created a dramatic late score that undid defending champions Saracens in the semi-final and there were moments of vision and precision against Exeter.
However, his high-risk, high-reward game means costly errors are also inevitable. Even before his pass was intercepted for Slade’s try, his juggle behind his own line had almost gifted Exeter a score in the first half.
Will Gatland feel he can afford that trade-off in the white heat of a Test series against world champions South Africa next summer?
Man of the match – Jonny Hill
Reaction – ‘the best team in Europe by some distance’
Former England scrum-half Matt Dawson on BBC Radio 5 Live: “It’s an amazing achievement for Exeter. There can’t have been another winning team that have only been in the top flight of their league for 10 years. And they deserve it because they have been the best team in Europe by some distance.
“I don’t think I’ve seen a final like that – they tend to be more cagey. When a team goes as far ahead as Exeter did you think this is a one-way show, but it was Exeter who were hanging on at the end.
“Sport does some strange things to your emotions and there was massive tension and drama even in an empty stadium.”
Former England centre Jeremy Guscott: “Well done Racing for coming back into the match but the difference was that Exeter are a team whereas Racing have individuals. Exeter finished the match with 14 players on the field but backed themselves in a defensive position and have won it together.”
Exeter: Hogg; Nowell, Slade, Whitten, O’Flaherty; J Simmonds (capt), Maunder; Hepburn, Cowan-Dickie, Williams, Gray, Hill, Ewers, Vermeulen, S Simmonds.
Replacements: Moon for Hepburn (56), Yeandle for Cowan-Dickie (56), Francis for Williams (56), Kirsten for Vermeulen (56), Skinner for Gray (59), Devoto for Whitten (59), Hidalgo-Clyne for Maunder (65)
Not Used: Steenson.
Racing 92: Zebo; Dupichot, Vakatawa, Chavancy (capt), Imhoff; Russell, Iribaren; Ben Arous, Chat, Colombe, Le Roux, Bird, Lauret, Sanconnie, Claassen.
Replacements: Machenaud for Iribaren (41), Kolingar for Ben Arous (51), Baubigny for Chat (51), Oz for Colombe (51), Beale for Zebo (65), Klemenczak for Vakatawa (76), Palu for Claassen (76).
Not Used: Ryan.
Referee: Nigel Owens (Wales)