Paris - Olivier Giroud converted a late penalty as France staggered to a 2-1 win against a Moldova side ranked 175th in the world on Thursday hours after securing a place at Euro 2020.
World champions France, who lost the Euro 2016 final as hosts to Portugal, were guaranteed a ticket to next year's tournament before kick-off in Paris following a 0-0 draw between Turkey and Iceland.
However their hopes of turning the final home qualifier into an evening of celebration at a chilly Stade de France were compromised when Vadim Rata punished abject defending to give Moldova a shock ninth-minute lead.
Raphael Varane levelled for France 10 minutes before half-time, triggering furious protests from Moldovan players and their coach who argued goalkeeper Alexei Koselev was fouled by Giroud.
The Chelsea forward grabbed the winner from the spot 11 minutes from time after Lucas Digne was cut down in the box to leave France two points clear of Turkey at the top of Group H.
"I could and should have scored before the penalty. We quite simply didn't get off to the start we should have done," Giroud told French television.
Giroud was handed a start by France coach Didier Deschamps despite playing just 20 minutes at club level since last month's international break.
"Whether he's indispensable or not, he's very useful and efficient," said Deschamps. "Despite what he doesn't have at Chelsea, he still has it with us."
France round out their qualification campaign away to Albania on Sunday in what will be Deschamps' 100th match in charge while Turkey travel to Andorra.
Deschamps recalled Kylian Mbappe and N'Golo Kante from injury here while Steve Mandanda retained his place in goal with Hugo Lloris ruled out until next year after elbow surgery.
Turkish coach Engin Firat, who replaced Semen Altman as Moldova boss two weeks ago, could not have dreamed of a better start to his reign when Clement Lenglet twice failed to head clear and Rata muscled his way past the Barcelona defender to poke beyond Mandanda.
It was just the third goal Moldova, who lost 4-1 to France in their opening qualifier last March, had scored in nine group matches.
France created a series of chances in reply with Benjamin Pavard volleying low past the far post before Giroud stabbed wide from close range.
Mbappe then sliced over from a tight angle and drew a sharp stop from Koselev with a 20-yard drive while a diving Giroud again headed wide.
Varane hauled the hosts level with a fiercely disputed equaliser as Koselev spilled a free-kick under pressure from Giroud, allowing the France captain to nod home and sparking an angry reaction from the visitors -- with Firat booked for his touchline protestation.
Mbappe, who sat out the October fixtures with Iceland and Turkey due to a thigh complaint, was denied by a courageous block from Ion Jardan near the hour mark but Moldova's brave resistance was ended on 79 minutes.
Veaceslav Posmac chopped down Everton left-back Digne inside the area and Giroud confidently stepped up to side-foot home the spot-kick for his 39th international goal, leaving him two adrift of France great Michel Platini.
Euro 2020 qualifying results from Groups A, B and H on Thursday:
At Plzen, Czech Republic
Czech Republic 2 (Krai 71, Celustka 79) Kosovo 1 (Nuhiu 50)
England 7 (Oxlade-Chamberlain 11, Kane 19, 24 37, Rashford 30, Sofranac 66-og, Abraham 84) Montenegro 0
At Faro, Portugal
Portugal 6 (Ronaldo 7-pen, 22, 65, Pizzi 52, Paciencia 56, Bernardo Silva 63) Lithuania 0
Serbia 3 (Mitrovic 11, 43, Radonjic 70) Luxembourg 2 (Rodrigues 54, Turpel 75)
At Elbasan, Albania
Albania 2 (Balaj 6, Manaj 55) Andorra 2 (Martinez 18, 48)
France 2 (Varane 35, Giroud 79-pen) Moldova 1 (Rata 9)
At Istanbul, Turkey
Turkey 0 Iceland 0
Playing on Friday (21:45 SA time unless stated):
Denmark v Gibraltar
At St Gallen, Switzerland
Switzerland v Georgia
Norway v Faroe Islands (19:00)
Romania v Sweden
At Cadiz, Spain
Spain v Malta
Armenia v Greece (19:00)
Finland v Liechtenstein (19:00)
At Zenica, Bosnia and Herzegovina
Bosnia and Herzegovina v Italy
At Moenchengladbach, Germany
Germany v Belarus
Northern Ireland v the Netherlands
Azerbaijan v Wales (19:00)
At Rijeka, Croatia
Croatia v Slovakia
Austria v North Macedonia
Israel v Poland
Slovenia v Latvia (19:00)
Cyprus v Scotland (16:00)
At Saint Petersburg, Russia
Russia v Belgium (19:00)
At Serravalle, San Marino
San Marino v Kazakhstan (19:00)