After striker Antoine Griezmann put France in the lead early, midfielder Nikola Vlasic equalized midway through the second half.
Croatia were starting to gain the upper hand when France substitute Paul Pogba flew a superb pass from the center line to Lucas Digne sprinting to the left. Everton’s left-back volley pass fell to Mbappe, who met the ball on the rebound from close range for his 16th international goal.
Andrej Kramaric wasted a chance to level for Croatia in the 90th, running into the left of the box and hitting a tame shot straight at goalkeeper Hugo Lloris.
Griezmann scored in the eighth minute after the Croatian defense failed to properly clear Ferland Mendy’s cross from the right. Hidden to the right of the penalty spot, Griezmann hit a quick shot that hit below the crossbar for his 33rd international goal.
France should have had a penalty in the 19th when Anthony Martial was pushed back by center-half Domagoj Vida on goal, but referee Bjorn Kuipers stirred play.
Croatia received great encouragement from around 7,000 spectators at Maksimir Stadium in Zagreb.
But they were frustrated when Lloris made a good save with his legs from Vlasic’s point blank shot in the 30th.
Croatia improved after the break but didn’t threaten until Vlasic’s excellent finish from the edge of the penalty area in the 64th. He controlled Josip Brekalo’s pass with his left foot and stabbed the ball past Lloris and into the bottom corner with the outside of his right.
In the other Group 3 game, Liverpool forward Diogo Jota scored twice as Portugal beat Sweden 3-0 without Cristiano Ronaldo, who tested positive for the coronavirus.
Portugal lead France on goal difference with both teams with 10 points in four games.
They meet in Lisbon on November 14.
More AP football: https://apnews.com/Soccer and https://twitter.com/AP_Sports