France are through to the semi-finals of a Women's European Championship for the first time after eventually beating the Netherlands 1-0 after extra-time at Euro 2022.
Les Bleues dominated the match in Rotherham from start to finish but were routinely frustrated by a stunning goalkeeping display from Daphne van Domselaar. Nevertheless, they stuck to their guns to eliminate the reigning champions of Europe and are now through to face Germany in the last four next Wednesday.
France nearly made another fast start to a match at this tournament when Sheride Spritse was dispossessed by Delphine Cascarino in her own half, but the eventual shot from Grace Geyoro trickled into Van Domselaar's grateful arms.
A cross from Kerstin Caparij was nearly headed in by Bleues defender Sakina Karchaoui, but Pauline Peyraud-Magnin managed to scamper back across her line to prevent an own goal.
Much of France's positive play was coming through Kadidiatou Diani, who had a fierce effort denied by Van Domselaar on the 15 minute mark.
A skewed clearance from Dominique Janssen was nearly turned into her own net, with Van Domselaar providing another smart stop to keep the scores level.
Charlotte Bilbault and Cascarino were next to sting the Twente stopper's palms, while Sandie Toletti smashed a loose ball over after a poor clearance from Lynn Wilms and Melvine Malard fired wide from a tight angle.
Cascarino lashed a superb volley against the post as France's domination continued, and they somehow didn't find themselves in front when Diani teed up Malard, with Stefanie van der Gragt making a huge clearance off the line.
Wendie Renard's header back across goal saw Geyoro squander a close-range chance as Van der Gragt again made a goal-line intervention. Malard's subsequent six-yard shot was blocked by both of the Netherlands' centre-backs.
The Oranje regrouped at the break and had the first big chance of the second 45 when a Spritse corner fell to the returning Vivianne Miedema, but she couldn't keep her volley down.
Van der Gragt made her third goal-line clearance of the evening too keep Renard out, before the towering defender and substitute Selma Bacha forced two more top saves out of Van Domselaar.
Geyoro spurned a wonderful opportunity to go in front with minutes remaining, somehow heading Cascarino's cross wide from mere yards out.
There was still time for Van Domselaar to produce two more outstanding saves inside the initial 90 minutes, keeping Cascarino and Renard out again as a gripping tie went into extra-time.
Bacha nearly made Miedema pay for a loose pass but her fierce strike sailed over, before VAR awarded France a penalty after Janssen was judged to have tripped Diani. Eve Perisset stepped up just about found the bottom corner out of Van Domselaar's reach.
Mark Parsons threw Van der Gragt up front to try and find an equaliser, but France survived a late aerial onslaught to book their place in the semi-finals.
France vs Netherlands Euro 2022, player ratings
1. France (4-3-3)
GK: Pauline Peyraud-Magnin - 5/10 - A spectator for most of the match.
RB: Eve Perisset - 7/10 - Didn't have much to do but most of the Netherlands' infrequent attacks came down her side. Broke the deadlock with superb penalty.
CB: Griedge Mbock Bathy - 6/10 - Made a few clearances and blocks.
CB: Wendie Renard - 8/10 - Imperious at both ends of the pitch, as per.
LB: Sakina Karchaoui - 7/10 - Largely acted as a winger and stretched play well.
CM: Charlotte Bilbault - 6/10 - Roamed forward with intent but rarely made a difference.
CM: Grace Geyoro - 7/10 - Ran through the Netherlands' midfield like a knife through butter. Should have scored a late winner.
CM: Sandie Toletti - 6/10 - Similarly to Bilbault was a nuisance at times but not for extended periods.
RW: Kadidiatou Diani - 8/10 - Unstoppable in the first half but was quiet after the break. Ultimately made the difference after being fouled for the penalty.
CF: Melvine Malard - 6/10 - Should have scored in her hour or so on the pitch but wasn't clinical enough. Replaced by Bacha.
LW: Delphine Cascarino - 9/10 - Almost all of France's best chances were created by Cascarino one way or another.
SUB: Selma Bacha (62', LW for Malard) - 8/10 - At the heart of France's attacks after coming on.
SUB: Clara Mateo (87', CM for Geyoro) - 6/10
SUB: Ouleymata Sarr (106', LW for DIata) - N/A
SUB: Marion Torrent (106', RB for Perisset) - N/A
SUB: Ella Palis (106', CM for Toletti) - N/A
2. Netherlands (4-3-3)
GK: Daphne van Domselaar - 10/10 - What an unbelievable performance. She and Van der Gragt were the only reasons why the Netherlands hung in the game for so long.
RB: Lynn Wilms - 4/10 - Largely given a torrid time by whichever forward she was up against.
CB: Stefanie van der Gragt - 9/10 - Three goal-line clearances. The definition of backs-to-the-wall defending.
CB: Dominique Janssen - 4/10 - Started poorly but grew in influence as the game wore on. However, she made a tired challenge on Diani to concede the penalty.
LB: Kerstin Caparij - 5/10 - Like Wilms found it hard to contain France's tricky attackers.
CM: Jackie Groenen - 5/10 - Made a series of cynical and poor fouls, but was at least a handy passer.
CM: Danielle van de Donk - 4/10 - Shifted out wide for the second half after failing to provide a midfield presence in the first.
CM: Sheride Spitse - 5/10 - Often criticised for her lack of mobility and those were definitely valid here. Couldn't get anywhere near her France counterparts but her set piece delivery was exquisite.
RW: Lineth Beerensteyn - 4/10 - Had a couple of crosses and runs at the France backline but was largely quiet. Sacrificed for Roord at half-time.
CF: Vivianne Miedema - 5/10 - Clearly wasn't fit after only recently recovering from Covid-19 but still had some bright moments.
LW: Victoria Pelova - 5/10 - Worked hard for the cause but rarely threatened.
SUB: Jill Roord (46', CM for Beerensteyn) - 6/10 - Helped her side gain some control in midfield.
SUB: Esmee Brugts (72', LW for Van de Donk) - 5/10
SUB: Romee Leuchter (106', CM for Spitse) - N/A
SUB: Aniek Nouwen (106', LB for Caparij) - N/A
SUB: Damaris Egurrola (115', RB for Wilms) - N/A