France and Denmark played out the first 0-0 draw of the World Cup at the Luzhniki Stadium as both teams progressed with Didier Deschamps' side winning Group C.
France, who were already assured of a place in the round of 16, will next face Argentina as Denmark face Group D winners Croatia.
Denmark created the first opening after three minutes when Andreas Cornelius headed on for Martin Braithwaite, who went down under pressure from a pair of defenders but saw his penalty appeal dismissed by referee Sandro Ricci.
Four minutes later, the Danes threatened again as Christian Eriksen crossed but Simon Kjaer headed wide under pressure.
Antoine Griezmann ballooned a cross too high as France came forward, and with a quarter of an hour gone France wanted a penalty when Lucas Hernandez tumbled under Henrik Dalsgaard's challenge.
Ousmane Dembele's cross hit Mathias Jorgensen inside the area, with the referee adjudging that he had not handled, and on the half-hour Cornelius played in a low cross for Eriksen, who wanted a spot-kick when goalkeeper Steve Mandanda and Hernandez combined to challenge.
Both sides were struggling to create clear openings, but as France began to enjoy the majority of the possession Dembele blasted off target and then Griezmann shot straight at Kasper Schmeichel from the edge of the box.
With two minutes of the half left, France should have broken through but Giroud fired over after Griezmann's control and layoff had created the opening inside the box.
In time added on, Nicolai Jorgensen was booked for bringing down Griezmann, and early in the second half France made the first change, bringing on Benjamin Mendy for Hernandez.
Mandanda looked uncertain when Eriksen played a 55th-minute free kick into his penalty area but, after losing the ball, he then gathered it with Denmark forwards closing in.
The France keeper was again in the limelight when he fumbled Eriksen's shot from distance, but he recovered to grab the ball before Cornelius could get there.
Eriksen then sent another effort wide before Denmark brought on Viktor Fischer for Pione Sisto as the hour approached.
France took off Griezmann and introduced Nabil Fekir, who almost made an instant impact when he turned and fired in a shot that brushed the side-netting on its way wide.
Cornelius was replaced by Kasper Dolberg before, with the final 10 minutes approaching, France took off Dembele and brought on Kylian Mbappe.
Giroud's hooked effort well over the bar summed up a match that had been low on both quality and chances, but Fekir -- whose introduction had brought some much-needed spark -- forced Schmeichel into a save with another attempt from distance.
Denmark's Thomas Delaney hobbled off after a strong challenge and was replaced by Lukas Lerager as the game drew to a close with boos from the neutral spectators in Moscow.