Frantic, frenetic and in the finish, it was France who edged out Ireland in a compelling Guinness Six Nations clash.
Billed as a battle of the favourites for the title between two teams that had humbled New Zealand in November, it was truly one of the championship's great encounters of recent times.
A full house at the Stade de France witnessed the sides trade blow for blow in a full blooded, not for the faint-hearted spectacle.
Ireland entered the fray minus captain and talisman Johnny Sexton, injured during the week, but his deputy Joey Carbery never looked out of place in Paris.
The hosts were fully worth their 19-7 half-time lead with Mack Hansen’s superb score the only damage done by Ireland, who conceded an Antoine Dupont try with just two minutes on the clock.
But tries from Josh van der Flier and Jamison Gibson-Park had Andy Farrell's men within a point with 30 minutes left.
It looked to be there for Ireland, but eventually the power of the France team told and they held on to go clear at the top of the table, with eyes for a Grand Slam now.
Ireland knew Dupont only needed a yard of space to make a difference and what they might not have expected was he also only needed 67 seconds to stamp his mark on the game.
Hansen turned his back on a lineout ball and the Toulouse man threw it infield where Gael Fickou and Yoram Moefana crashed up the middle.
A few moments later, Romain Ntamack passed inside where Dupont was running a trademark support line and the crowd, who had barely caught their breath after a stunning rendition of La Marseillaise, raised the roof as he dived over the line.
We need your consent to load this comcast-player contentWe use comcast-player to manage extra content that can set cookies on your device and collect data about your activity. Please review their details and accept them to load the content.Manage Preferences
Full-back Melvyn Jaminet converted and Ireland tried to respond but spilled the ball on the French 22; Gibson-Park chased the kick back all the way to Ireland's 22 and but James Ryan got isolated at the subsequent ruck.
Jaminet smashed over the penalty but Ireland hit back straight from the kick-off.
The France 15 waited for Carbery’s restart to land but Hansen had other ideas.
OH MY WORD! WHAT A CATCH FROM MACK HANSEN!#FRAvIRE #GuinnessSixNations pic.twitter.com/mRc6KOkDgZ
— Guinness Six Nations (@SixNationsRugby) February 12, 2022
The Australian, on just his second cap, never took his eye off the ball and claimed it in two hands before running in unopposed for a try that Carbery converted from the sideline.
Wary of France’s insatiable appetite for ruck ball, Gibson-Park wasted no time moving the ball from contact and Ireland’s runners were getting hands on without making much ground.
Ireland lost Ronán Kelleher to injury in the 26th minute and his replacement Dan Sheehan missed his man from a lineout before Paul Willemse turned the ball over.
Jaminet pushed the French lead out to 13-7 with a penalty following smart play on the shortside by Dupont and Damian Penaud.
There was barely time to draw a breath when Tadhg Furlong was penalised for holding on before the French pack pushed the Irish scrum back, allowing the Perpignan man to extend the advantage to 19-7 at the break, at which time Ryan also departed.
The switch with Iain Henderson was only temporary and the Ireland skipper returned for the second half.
Jaminet nailed a long-distance penalty just four minutes after the break but again, Ireland struck back quickly.
Van der Flier was on hand after a quick lineout maul brought Ireland over the line. It was the Leinster man’s sixth try and brought Ireland back into a game that was fast slipping away.
Carbery, in his first Six Nations start, landed the extras.
Keenan pinned his ears back and made 50 yards as the French stood off; Furlong and Sheehan barged up before creating the tiniest of gaps for Gibson-Park to bolt through before diving under the posts.
This footwork from Gibson-Park 🤤 #FRAvIRE #GuinnessSixNations pic.twitter.com/g6TZDFzq92
— Guinness Six Nations (@SixNationsRugby) February 12, 2022
All of a sudden, Farrell’s men trailed by just one ten minutes into the second half.
Peter O’Mahony came on for Jack Conan, who had given everything in a war of attrition.
Then Ireland couldn’t negotiate their way out of the 22 and lost the ball in contact; Uini Atonio made for the line and was hauled down just short but the damage had been done and Cyril Baille stretched out a paw to dot down.
This time Jaminet missed; his first shot off target from seven attempts.
At this point Fabien Galthie sent on his reinforcements with Romain Taofifenua, Thibaut Flament and Demba Bamba pushed into action, while O'Mahony rushed off for a head injury assessment with Henderson again the cover.
The crowd erupted as Dupont lost his balance dramatically after the merest of brushes with Beirne’s backside; more Gallic fall than Gallic flair.
The second row, who had moved back to the flank then snapped up a loose ball before booting it left-footed for a 50:22. Unfortunately the visitors couldn’t secure the lineout.
Carbery reduced the deficit to three points, 27-24, with eight minutes to play with a penalty.
But eventually the Irish resistance was broken.
Sheehan miraculously denied Jaminet who looked certain to score when bounding over the tryline, only to have the try ruled out after a TMO consultation that showed the replacement hooker getting his hand under the ball.
That was during a penalty advantage though, and Jaminet made it a six-point game with his simplest kick of the day and although Ireland made a final foray into the French half, it proved just a bridge too far on this occasion.
France: Melvyn Jaminet; Damian Penaud, Gael Fickou, Yoram Moefana, Gabin Villiere; Romain Ntamack, Antoine Dupont (capt); Cyril Baille, Julian Marchand, Uini Atonio; Cameron Woki, Paul Willemse; Francois Cros, Anthony Jelonch, Gregory Alldritt.
Replacements: Peato Mauvaka, Jean Baptiste Gros, Demba Bamba, Romain Taofifenua, Thibaut Flament, Dylan Cretin, Maxime Lucu, Thomas Ramos.
Ireland: Hugo Keenan; Andrew Conway, Garry Ringrose, Bundee Aki, Mack Hansen; Joey Carbery, Jamison Gibson Park; Andrew Porter, Ronan Kelleher, Tadhg Furlong; Tadhg Beirne, James Ryan (capt); Caelan Doris, Josh van der Flier, Jack Conan.
Replacements: Dan Sheehan, Cian Healy, Finlay Bealham, Iain Henderson, Peter O'Mahony, Conor Murray, Jack Carty, Robbie Henshaw.
Referee: Angus Gardner (Aus)