French manager Didier Deschamps chose to tinker with his lineup yet again, opting to play central midfielder Blaise Matuidi in a wide role while Ousmane Dembele stayed on the bench.
The 19-year-old Mbappe tapped in after Olivier Giroud's shot looped over goalkeeper Pedro Gallese when it took a deflection off a defender in the 34th minute of a high-intensity opening half.
"They have excellent players up front, they have some very fast players", he said, singling out Paolo Guerrero and Jefferson Farfan. France captain Lloris, making his 100th appearance for his country, was a bystander for long periods.
Substitute Ousmane Dembele - dropped for Giroud - could have wrapped up the points in the 82nd minute but fired wide, as France appeared to have settled for a one-goal victory.
It was a lone goal from Kylian Mbappe that was the difference.More news: Palace says UK's Prince Louis to be christened July 9
Energized by the tens of thousands of Peruvian fans, the South Americans tried to match Les Bleus' intensity early but were outshot 12-10 with only two of Peru's chances on target, with two others blocked.
Having picked up their pace in the latter part of the first half, the break seemed to have slowed the tempo for France once more in the opening stage of the second and it was Peru who saw the bulk of the action and had the lion's share of the chances.
Both teams play their final group stage matches on Tuesday.
Peru are fast enough to do plenty of damage with counter-attacks, and sooner or later, the ball has to fall for them.
Thursday marked the 100th worldwide appearance for Lloris.