France and Denmark appeared content to go through in order, and that's how their group finale played out in Moscow.
France was already in the World Cup knockout stage, and with Peru taking care of Australia, Denmark appeared content to accept its last 16 place as a group runner-up as well.
The two European sides played to the first 0-0 draw of the 2018 World Cup, with neither side really hitting its full stride and happy to move on out of Group C. Peru's 2-0 win over Australia meant that Denmark had nothing it needed to do to secure its knockout place, and instead of truly pushing France to win the group–which it could have achieved with a victory–it played out the string.
France made a number of changes to its lineup, electing to rest Paul Pogba, Kylian Mbappe and Hugo Lloris, among others, instead turning to its enviable depth to see out the group. It came out with the bulk of the possession, showing there isn't much of a drop off. Denmark found its footing a few minutes in, though, having shouts for a penalty go unheard and earning a corner in the seventh minute.
France's first chance came at the quarter-hour mark, when Olivier Giroud had a ball fall to him in the center of the box. He had to quickly react to turn it on frame, which he did, only to have a leaping Kasper Schmeichel put it out of play for a corner.
Denmark clamored for a penalty in the 30th minute on a rare push forward by the Danes. Andreas Cornelius played a lovely early cross from the left into space, which Christian Eriksen looked to meet in stride in the box. France goalkeeper Steve Mandanda came racing off his line and clattered into the Tottenham star to deny the chance, while also getting the ball, and no penalty call was issued, nor did VAR signal for a review that could have led to a spot kick. The news wasn't all bad for Denmark, as in the group's other match, Andre Carrillo scored for Peru, putting Australia in a 1-0 hole and expanding Denmark's margin for error.
France tested Schmeichel again in the 39th minute, when Antoine Griezmann curved a left-footed chance from 20 yards on frame, but it didn't trouble the Leicester City goalkeeper much, as he made the calm catch.
As the teams continued to spar going into the second half, more positive word came for Denmark from the other match, in which Paolo Guerrero scored to double Peru's lead over Australia. With the Socceroos needing to overturn that deficit in short order, Denmark's chances at advancement became even more secure.
Denmark nearly went ahead in the match–and the group–a few minutes after Peru's assist, and it came through Eriksen, who rifled a 25-yard free kick on goal. Mandanda spilled the rebound, but he recovered before any Dane could pounce on the chance.
Eriksen had another try from distance in the 59th minute, with a ball falling to him at the edge of box for a swift volley. He hooked it wide of Mandanda's goal, though, keeping it 0-0.
Nabil Fekir came off the bench for France and tried to inject some life into the match, which he nearly did in the 70th minute when he took aim at goal, only to put his chance into the side netting.
Mbappe came off the bench for France for the final stages and brought some electricity in the final third, but nothing to the extent that made it seem France would find a winner, and the two sides walked off the field to a chrous of boos at the Luzhniki stadium to cap a rather dull affair.
You can watch the highlights from the other Group C finale between Australia and Peru here.
Here were the lineups for both teams:
Here are the rosters for both sides:
Goalkeepers: Kasper Schmeichel (Leicester), Jonas Lossl (Huddersfield), Frederik Ronow (Brondby)
Defenders: Andreas Christensen (Chelsea), Simon Kjaer (Sevilla), Mathias Jorgensen (Huddersfield), Jannik Vestergaard (Borussia Monchengladbach), Henrik Dalsgaard (Brentford), Jens Stryger (Udinese), Jonas Knudsen (Ipswich)
Midfielders: Christian Eriksen (Tottenham), Lasse Schone (Ajax), Lukas Lerager (Bordeaux), Michael Krohn-Dehli (Deportivo La Coruna), William Kvist (FC Copenhagen), Thomas Delaney (Werder Bremen)
Forwards: Andreas Cornelius (Atalanta), Kasper Dolberg (Ajax), Martin Braithwaite (Bordeaux), Nicolai Jorgensen (Feyenoord), Pione Sisto (Celta Vigo), Viktor Fischer (FC Copenhagen), Yussuf Poulsen (RB Leipzig)
Manager: Age Hareide
Goalkeeper: Alphonse Areola (PSG), Hugo Lloris (Tottenham), Steve Mandanda (Marseille)
Defenders: Lucas Hernandez (Atletico Madrid), Presnel Kimpembe (PSG), Benjamin Mendy (Manchester City), Benjamin Pavard (Stuttgart), Adil Rami (Marseille), Djibril Sidibe (Monaco), Samuel Umtiti (Barcelona), Raphael Varane (Real Madrid)
Midfielders: N'Golo Kante (Chelsea), Blaise Matuidi (Juventus), Steven N'Zonzi (Sevilla), Paul Pogba (Manchester United), Corentin Tolisso (Bayern Munich)
Forwards: Ousmane Dembele (Barcelona), Nabil Fekir (Lyon), Olivier Giroud (Chelsea), Antoine Griezmann (Atletico Madrid), Thomas Lemar (Monaco), Kylian Mbappe (PSG), Florian Thauvin (Marseille)
Manager: Didier Deschamps