France who top Group C with six points after matchday two, will continue on to the knockout rounds. It was an even opening in Yekaterinburg, but France had two good chances in quick succession after quarter of an hour.
Raphael Varane headed an Antoine Griezmann corner just wide before the striker forced a good save from Peru goalkeeper Pedro Gallese, hitting a nod-down from Giroud into the goalkeeper’s legs.
Peru had a few good chances in the first half, but their best came in the 31st minute as captain Paulo Guerrero rounded Samuel Umtiti in the area before striking, but it was well saved by the legs of Hugo Lloris.
Not long after, Gallese denied Mbappe at the other end, saving from the striker’s scrambled backheel effort.
A minute later, Mbappe beat the goalkeeper.
A cross from Giroud on the left took a big deflection off the legs of Alberto Rodriguez, with the loose ball landing to Mbappe in the six-yard box, and he made no mistake in slotting home.
Peru could have got the equaliser six minutes after the restart but were denied by the upright.
Half-time substitute Jefferson Farfan laid the ball off to Pedro Aquino and he hit a thunderous effort from 25 yards, but it pinged off the corner of the crossbar and went wide.
The South Americans continued to try their luck from range, with Luis Advincula letting fly from just outside the area in the 68th minute, but his curling effort also went over the crossbar.
Not long after, the impressive Andre Carrillo fired a cross into the area but it ran just too long for Farfan, who could only poke it into the side of the net.
But despite late calls from the Peru bench to pile everyone forward with every attack and set-piece, they could not find their way through as France squeezed through into the last 16 with another unconvincing performance.