Kylian Mbappe scored twice for France as the defending champions laid down a Cup marker by beating Denmark to become the first team into the knockout stage.
The forward stole the show once again with second-half strikes to take his side through.
Mbappe had earlier blazed over from 12 yards and forced Kasper Schmeichel into a save with a rising shot.
But the Paris St-Germain star broke the deadlock just past the hour mark, exchanging a fine one-two with Theo Hernandez before stroking in.
Denmark equalised just seven minutes later with their first effort on target as defender Andreas Christensen headed home at the far post after France failed to clear a corner.
Christensen, though, may have counted himself lucky to still be on the pitch at that point after receiving only a yellow card on 20 minutes for dragging back Mbappe, who was looking to run clear.
France keeper Hugo Lloris made a sharp stop to keep out Tottenham team-mate Pierre-Emile Hojbjerg’s first-time shot, while Martin Braithwaite agonisingly fired into the side netting.
Mbappe became France’s youngest scorer in the competition four years ago when aged 19,
And with four minutes left, he snatched the winner, sneaking in at the far post to convert Antoine Griezmann’s cross.
Box-office Mbappe revels in the spotlight
All eyes were on Olivier Giroud before the game and whether he could become France’s all-time leading scorer and move clear of Thierry Henry.
But the AC Milan striker failed to make an impact and was replaced just after the 61st-minute opener as Mbappe revelled in the spotlight.
Just 23, he already has 31 international goals and is rapidly closing in on Giroud and Henry’s 51-goal mark.
Mbappe’s double helped France win a sixth straight Cup game for the first time.
He converted the first following a delightful interchange with Theo Hernandez, who replaced brother Lucas after a knee injury ended his tournament.
Defender Raphael Varane started a game for the first time since 22 October, when he left the pitch in tears for Manchester United against Chelsea after suffering a muscular injury in the Premier League game.
He had the first chance when a flicked header was cleared off the line by Joakim Maehle.
Adrien Rabiot’s nodded effort was then tipped away by Schmeichel, while the Nice keeper also kept out Griezmann’s low drive.
Although Denmark equalised through Christensen’s header – only one of two efforts on goal for Kasper Hjulmand’s men – Mbappe turned in Griezmann’s cross before celebrating passionately in front of the flag-waving French fans.
Player of the match
DembéléOusmane Dembélé
France
-
Squad number11Player nameDembélé
-
Squad number7Player nameGriezmann
-
Squad number10Player nameMbappé
-
Squad number22Player nameHernández
-
Squad number20Player nameComan
-
Squad number9Player nameGiroud
-
Squad number24Player nameKonaté
-
Squad number14Player nameRabiot
-
Squad number8Player nameTchouaméni
-
Squad number4Player nameVarane
-
Squad number26Player nameThuram
-
Squad number13Player nameFofana
-
Squad number5Player nameKoundé
-
Squad number18Player nameUpamecano
-
Squad number1Player nameLloris
Denmark
-
Squad number3Player nameNelsson
-
Squad number1Player nameSchmeichel
-
Squad number10Player nameEriksen
-
Squad number13Player nameKristensen
-
Squad number6Player nameChristensen
-
Squad number23Player nameHøjbjerg
-
Squad number25Player nameLindstrøm
-
Squad number5Player nameMaehle
-
Squad number14Player nameDamsgaard
-
Squad number9Player nameBraithwaite
-
Squad number2Player nameAndersen
-
Squad number21Player nameCornelius
-
Squad number26Player nameBah
-
Squad number15Player nameNørgaard
-
Squad number12Player nameDolberg
Line-ups
France
Formation 4-2-3-1
- 1Lloris
- 5KoundéBooked at 43mins
- 4VaraneSubstituted forKonatéat 75′minutes
- 18Upamecano
- 22Hernández
- 8Tchouaméni
- 14Rabiot
- 11DembéléSubstituted forComanat 75′minutes
- 7GriezmannSubstituted forFofanaat 90+3′minutes
- 10Mbappé
- 9GiroudSubstituted forThuramat 63′minutes
Substitutes
- 2Pavard
- 3Disasi
- 6Guendouzi
- 12Kolo Muani
- 13Fofana
- 15Veretout
- 16Mandanda
- 17Saliba
- 20Coman
- 23Aréola
- 24Konaté
- 25Camavinga
- 26Thuram
Denmark
Formation 3-4-2-1
- 1Schmeichel
- 2Andersen
- 6ChristensenBooked at 20mins
- 3Nelsson
- 13KristensenSubstituted forBahat 90+2′minutes
- 23Højbjerg
- 10Eriksen
- 5Maehle
- 25LindstrømSubstituted forNørgaardat 85′minutes
- 14DamsgaardSubstituted forDolbergat 73′minutes
- 21CorneliusBooked at 23minsSubstituted forBraithwaiteat 45′minutes
Substitutes
- 4Kjaer
- 7Jensen
- 9Braithwaite
- 11Skov Olsen
- 12Dolberg
- 15Nørgaard
- 16Christensen
- 17Stryger Larsen
- 18Wass
- 19Wind
- 20Poulsen
- 22Rønnow
- 24Skov
- 26Bah
- Referee:
- Szymon Marciniak
- Attendance:
- 42,860
Live Text
-
Match ends, France 2, Denmark 1.
-
Second Half ends, France 2, Denmark 1.
-
Attempt missed. Joakim Maehle (Denmark) right footed shot from outside the box is too high.
-
Foul by Alexander Bah (Denmark).
-
Kylian Mbappé (France) wins a free kick in the defensive half.
-
Substitution, France. Youssouf Fofana replaces Antoine Griezmann.
-
Substitution, Denmark. Alexander Bah replaces Rasmus Kristensen.
-
Attempt saved. Kylian Mbappé (France) right footed shot from outside the box is saved in the centre of the goal. Assisted by Theo Hernández.
-
Attempt blocked. Joachim Andersen (Denmark) left footed shot from outside the box is blocked. Assisted by Rasmus Kristensen.
-
Goal! France 2, Denmark 1. Kylian Mbappé (France) right footed shot from very close range to the bottom left corner. Assisted by Antoine Griezmann with a cross.
-
Substitution, Denmark. Christian Nørgaard replaces Jesper Lindstrøm.
-
Attempt missed. Pierre-Emile Højbjerg (Denmark) right footed shot from outside the box misses to the left. Assisted by Christian Eriksen.
-
Martin Braithwaite (Denmark) hits the right post with a right footed shot from the centre of the box. Assisted by Kasper Dolberg with a cross.
-
Attempt missed. Adrien Rabiot (France) left footed shot from the right side of the box is close, but misses the top right corner. Assisted by Theo Hernández with a cross following a corner.
-
Corner, France. Conceded by Joachim Andersen.
-
Attempt blocked. Jules Koundé (France) header from the centre of the box is blocked. Assisted by Kingsley Coman with a cross.
-
Corner, France. Conceded by Joakim Maehle.
-
Attempt blocked. Aurélien Tchouaméni (France) header from very close range is blocked. Assisted by Antoine Griezmann with a cross.
-
Corner, France. Conceded by Andreas Christensen.
-
Corner, France. Conceded by Rasmus Kristensen.
Get the latest results and goal notifications for any team at the Fifa Cup by downloading the BBC Sport app: Apple – Android – Amazon
Get your daily dose of Fifa Cup reaction, debate & analysis with Cup Daily on BBC Sounds