There was a controversial finish at Murrayfield as Scotland were adjudged to have been held up over the line, meaning France claimed a 20-16 win in the Six Nations.
Les Bleus looked in danger of starting the championship with back-to-back defeats as they trailed for most of the match after Ben White’s seventh-minute try for Scotland.
However, a moment of Louis Bielle-Biarrey brilliance in the 70th minute allowed France – who had scored in the first half through Gael Fickou – to move themselves ahead.
Scotland, who were looking to make it back-to-back Six Nations wins after their triumph over Wales last weekend, staged a late rally and thought they had claimed the victory when they forced their way over the try-line after the 80-minute mark, but following a lengthy TMO review, it was deemed they had not grounded the ball on the whitewash.
Scotland – already missing key back-three members Blair Kinghorn and Darcy Graham through injury – were forced into a late change in the back division when wing Kyle Steyn withdrew after his wife went into labour. The uncapped Harry Paterson, who was not in the initial 23, was enlisted to start at full-back, with Kyle Rowe shifting to wing.
The Scots went ahead with a superbly worked try in the seventh minute, with some quick passing from Duhan van der Merwe, Paterson and Huw Jones on the right paving the way for Toulon scrum-half White, who did well to avoid dropping the ball before holding off the attention of two Frenchmen trying to grapple him as he slid gleefully over the line. Finn Russell converted.
The visitors got their first points in the 12th minute through a Thomas Ramos penalty. And they looked certain to get themselves in front three minutes later when Fickou saw a gap on the left and went for it, but Van der Merwe got back to made a vital challenge just before the line, which was deemed by the officials to be legal, much to the frustration of Les Bleus.
The Scots generally looked the more assured of the two sides, however, and a couple of Russell penalties in the 22nd minute and then just before the half hour, nudged them 10 points clear.
A stark reminder of the French threat came in the 31st minute when they worked an opening on the right for Fickou who forced his way over the line despite the best efforts of Jones to halt him. Ramos converted, bringing his team within three points of their hosts.
The French – who played the majority of the Ireland game with 14 men last weekend – suffered a blow two minutes before the interval when Uini Atonio was yellow carded for a dangerous tackle on Matt Fagerson.
The Scots were camped in front of the French line for the closing minutes of the first half but were unable to reward themselves with further points as they went in at the interval with a slender 13-10 lead.
Fagerson – who had been in the wars in the first half – was replaced by Saracens back-rower for the start of the second period.
Following his indiscipline, Atonio would have been hugely relieved to return to the fray with no further scoreline damage incurred by his side.
There was a sense that the failure to take advantage of the prop’s time in the sin bin might come back to bite them, but another penalty from Russell in the 59th minute opened up a six-point advantage and eased some of the tension among the home support.
Just as the hosts looked to have a good level of control, France turned the game in their favour in the 70th minute when Bielle-Biarrey raced on to his own kick over the top and touched down on the left. Ramos converted to put Les Bleus a point ahead.
The full-back then added a penalty in the 77th minute, ensuring the Scots would need a try to won the game. They momentarily thought they had it in the dying moments before the officials cut short their celebrations.
Scotland: 15 Harry Paterson, 14 Kyle Rowe, 13 Huw Jones, 12 Sione Tuipulotu, 11 Duhan van der Merwe, 10 Finn Russell (cc), 9 Ben White, 8 Jack Dempsey, 7 Rory Darge (cc), 6 Matt Fagerson, 5 Scott Cummings, 4 Grant Gilchrist, 3 Zander Fagerson, 2 George Turner, 1 Pierre Schoeman
Replacements: 16 Ewan Ashman, 17 Alec Hepburn, 18 Elliot Millar-Mills, 19 Sam Skinner, 20 Andy Christie, 21 George Horne, 22 Ben Healy, 23 Cameron Redpath
France: 15 Thomas Ramos, 14 Damian Penaud, 13 Gaël Fickou, 12 Jonathan Danty, 11 Louis Bielle-Biarrey, 10 Matthieu Jalibert, 9 Maxime Lucu, 8 Grégory Alldritt (c), 7 Charles Ollivon, 6 François Cros, 5 Paul Gabrillagues, 4 Cameron Woki, 3 Uini Atonio, 2 Peato Mauvaka, 1 Cyril Baille
Replacements: 16 Julien Marchard, 17 Sébastien Taofifenua, 18 Dorian Aldegheri, 19 Posolo Tuilagi, 20 Alexandre Roumat, 21 Paul Boudehent, 22 Nolann Le Garrec, 23 Yoram Moefana
Referee: Nic Berry (Australia)
Assistant Referees: Nika Amashukeli (Georgia), Jordan Way (Australia)
TMO: Brian MacNeice (Ireland)