France and Denmark played out the first goalless draw of the 2018 World Cup - but both progress to the last 16 of the competition.
Les Bleus finished top of the group despite another uninspiring display, while Peru's win over Australia confirmed Denmark's place in the knockout stages.
The two teams struggled in a goalless first half with the first Mexican wave starting after 20 minutes, the action restricted to Ousmane Dembele blazing over from outside the box just before the break.
France, already qualified, used the match as an opportunity to give several squad players some game time, making for a disjointed performance.
Denmark still had work to do to ensure qualification for the last 16, but Peru's early goal in the other Group C match meant Australia's chances of progressing ahead of the Danes looked slim. A second Peru goal after half-time made qualification all but certain.
Deschamps brought on Kylian Mbappe in the final 10 minutes in an attempt to find a goal, the 19-year-old adding much-needed urgency to France's attack.
But not even the Paris Saint-Germain man could find a goal in this dull affair, ending this World Cup's 36-game run of goals.
Group winners France will play runner-up of Group D (either Iceland, Nigeria or Argentina) on Saturday, while Denmark will face Croatia on Sunday for a place in the quarter-finals
Talking point
There weren't many, but Sam Wallace was impressed with Chelsea defender Andreas Christensen's performance in central midfield. You can read Sam's analysis here.
T here was not much that showed great imagination in a Danish performance aimed primarily at keeping France at arm’s length other than the use of the Chelsea defender Andreas Christensen as a defensive midfielder to try to help deal with the threat of Antoine Griezmann.
75 min Denmark 0 France 0
I've just realised that if Denmark do finish second in the group I'll be blogging their last-16 match against Croatia on Sunday. I suddenly find myself really hoping they can dig this out and top the group to avoid that happening.
Meanwhile Cornelius, who's worked hard, goes off to be replaced by he exciting young Ajax striker Kasper Dolberg.
Not ideal
So as it stands France top the group and Denmark are second. Martin O'Neill describes the game as "rubbish" in the ITV studio.
It has been poor but I do think we should spare France too savage abuse - they only need a point to top the group and are up against a team with a very strong defence playing five centre-backs. The onus is on Denmark to attack, not them.
Are we in for the first 0-0 of the tournament?
Half-time Denmark 0 France 0
Griezmann and Giroud again aren't on the same wavelength as another France attack peters out. Griezmann is then chopped down by Jorgensen as the Frenchman broke clear with the ball from a Denmark corner. Jorgensen is deservedly booked for his troubles.
And that's half-time. Boos ring around the stadium, Giroud shakes his head, and there are furrowed French brows all round.
31 min Denmark 0 France 0
Another Denmark penalty appeal! Delaney threads a pass to Cornelius, who flies down the left flank and plays a low pass across goal that looks perfect for Eriksen. The Tottenham midfielder can't quite there though as Mandanda rushes from goal and smothers the ball away. Eriksen did get there first but he could only touch the ball onto Mandanda. If there was a foul it was Hernandez taking Eriksen out from behind. No pen is just about the right call.
15 min Denmark 0 France 0
Giroud links up well with Hernandez before digging out a shot that Schmeichel claws away. Don't think that was going in but Schmeichel couldn't take any chances. In the build-up, Hernandez appealed for a penalty after claiming he was fouled by Dalsgaard. Again nothing doing from the referee. Varane heads the resulting corner well wide.
Kick-off
We're under way in Moscow!
A reminder of the teams for this one below. It'll be interesting to see how Denmark line up - there's a thought that Jorgensen will play as a third central defender in a back three.
Denmark are likely out if they lose and Australia. A draw here sees both France and Denmark qualify.
Denmark: Schmeichel, Dalsgaard, Kjaer, Christensen, Larsen, Delaney, Mathias Zanka Jorgensen, Eriksen, Sisto, Cornelius, Braithwaite.
France: Mandanda, Sidibe, Varane, Kimpembe, Lucas, Kante, Nzonzi, Lemar, Griezmann, Dembele, Giroud.
What it means
Denmark make four changes, which include Middlesbrough's strangely un-Scandinavian sounding Martin Braithwaite and former Cardiff striker Cornelius coming in for Schone and Nicolai Jorgensen.
For France it's a reshuffle of the defence, with Lloris, Pavard and Umtiti replaced with Mandanda, Sidibe and Kimpembe. Further forward Pogba, Matuidi and Mbappe make way for Nzonzi, Lemar, and Dembele. Six changes in all for France.
Needle
It would be far too strong to suggest this is any kind of grudge match, but Denmark manager Age Hareide's pre-tournament comments about France certainly add a bit of spice.
When asked about today's opponents, Hareide described France as "nothing special" and suggested that they were "not a team." He also said that Paul Pogba "cares too much about his looks."
Didier Deschamps responded yesterday by saying that Hareide must "take responsibility" for his comments. Deschamps then insisted his team were not out to prove a point against Denmark but were focused simply on securing top spot in Group C.
Having secured qualification with two pretty unconvincing wins, Deschamps is in the enviable position of trying a few things out this afternoon is he so desires (though a defeat would see them lose top spot in the group and have to face Croatia in the last 16).
For Denmark there is the more serious matter of confirming their qualification to the last 16, which they will do if they avoid defeat or if Australia fail to beat Peru. If Denmark lose and Australia win then qualification would come down to goal difference and then goals scored - Denmark are currently +1 with two goals scored; Australia are -1 with two goals scored). Denmark would top the group with a win.
Back to France, and Deschamps will be desperate for a more coherent performance than the two stilted displays his team produced against Australia and then Peru. Granted France looked better against Peru with Olivier Giroud offering them a focal point up front, but they still faded in the second half and struggled to create chances.
Antoine Griezmann in particular will hope to improve after two pretty anonymous outings so far. Assuming Deschamps does make a few tweaks then he has an embarrassment of riches to call upon, with Thomas Lemar, Ousmane Dembele and Nabil Fekir all on the bench against Peru.
For Denmark, Hareide is unlikely to make wholesale changes, but he will have to replace midfielder Yussuf Poulsen, who is suspended. Hareide will also hope his team offer more from an attacking perspective after running out of ideas in the second half against Australia.
The match gets under way at 3pm BST, with team news at 2pm BST if not before.