Mbappe sent France ahead in the Group D clash just after the hour mark with a prodded finish after playing a clever on-two with teammate Theo Hernandez, but Denmark roared back with a thumping header from defender Andreas Christensen to level the scores.
The Paris Saint-Germain striker emerged again late on to convert a cross from Antoine Griezmann and ensure France remain flawless as they continue their World Cup title defence. Mbappe has now scored 31 goals for France -- moving him level with legend Zinedine Zidane on the country's all-time scoring list.
Saturday's result leaves France at the top of Group D on six points, three ahead of second-place Australia, while Denmark are yet to find their first win with just a point after two games.
A tight, tense first half saw France enjoy the better chances as Adrien Rabiot went close with a header and the Danes were forced into a number of last-ditch blocks to keep their clean sheet intact.
It was not to last and Mbappe put the French ahead in the 61st minute, crowning a superb high-speed French counter with a bouncing first-time finish from Hernandez's clever pull-back.
Always a danger from set pieces, Christensen put the Danes level seven minutes later, stealing in behind the defence and stooping to head home.
Neither side seemed content with a draw and Rabiot fired a spectacular volley over in the 80th minute, and a minute later substitute Martin Braithwaite fired a first-time effort of his own just wide of the near post.
The game looked set to end in a stalemate until Mbappe popped up in the 86th minute at the far post to cushion home an Griezmann cross from close range to restore the lead to send the travelling French fans into raptures.
Denmark threw everything forward looking for a second equaliser, leaving acres of space at the back, but their late attacks against a side they beat twice in the recent Nations League campaign lacked precision and the French held on for the win that put them through.