Buoyed on by a limited, albeit raucous, home crowd in Zagreb, Croatia looked well place to push on when Nikola Vlasic cancelled out Antoine Griezmann's stunning eighth-minute opener.
Mbappe failed to convert a gilt-edged chance soon after the world champions broke the deadlock, and Croatia could have made France pay earlier if not for an excellent stop from Hugo Lloris, who was then beaten by Vlasic after the break.
Despite a superb stop from Dominik Livakovic to deny Paul Pogba, France had their winner when Lucas Digne brilliantly teed up Mbappe with 11 minutes remaining.
Griezmann drew France level in Les Bleus 4-2 triumph over Croatia in September, and it did not take long for him to open the scoring this time out as he arrowed a brilliant finish in off the woodwork.
It should have been 2-0 seven minutes later, only for Mbappe to slice wide with the goal gaping, with Anthony Martial seeing a penalty appeal turned down following a tussle with Domagoj Vida.
Mario Pasalic looked set to restore parity when he pounced on a loose ball six yards out, only for Lloris to make an outstanding save with his feet.
Vlasic drilled wide from the edge of the area eight minutes into the second half, yet the playmaker showed no such profligacy soon after when he prodded a fantastic finish across Lloris and into the left-hand corner.
Substitute Pogba made an instant impact, though, and would have restored France's lead if not for Livakovic's reactions.
However, the Manchester United man was to prove decisive, with his raking pass finding Digne, who volleyed in a cross for Mbappe to keep France level pegging with Group A3 leaders Portugal.
What does it mean? France keep pace with Portugal
While Portugal, without Cristiano Ronaldo, easily cast aside Sweden in Group A3's other match, it was an altogether more difficult task for Didier Deschamps' side on Wednesday, but the victory, which came despite them having only 47.6 per cent of the possession, keeps them right on the heels of the group leaders.
Griezmann a thorn in Croatia's side
Following his opener, Griezmann has now scored three goals against Croatia for France. He has only netted more against Germany.
Injury halts superb Digne display
The first-time cross from full-back Digne for Mbappe's winner was exquisite, but the 27-year-old was also excellent defensively, making a game-high seven tackles.
However, his match came to a concerning end late on when he suffered an apparent knee injury, which will be a huge worry for Everton ahead of the Merseyside derby on Saturday.
France play Finland in a friendly on November 11, while Croatia are due to play Turkey a day earlier.