Both sides squandered good chances in the opening 45 minutes, with Antoine Griezmann hitting the post, but the breakthrough didn't arrive until shortly before the hour mark when Olivier Giroud nodded home.
The hosts were ahead for only six minutes before Bogdan Stancu levelled things up from the spot, but Dimitri Payet thrashed home a memorable 89th-minute winner to rescue all three points for his side.
Find out how all of the action unfolded courtesy of Sports Mole's live minute-by-minute coverage below.
FRANCE STARTING XI: Lloris; Sagna, Koscielny, Rami, Evra; Kanté, Matuidi, Pogba; Griezmann, Payet, Giroud
ROMANIA STARTING XI: Tătăruşanu; Săpunaru, Grigore, Chiricheş, Raţ; Hoban, Pintilii, Stanciu, Popa, Stancu; Andone