Italy were made to pay for failing to take their chances in the first half as France handed them a fifth Six Nations defeat this year.
Italy were unable to snatch a win after France were reduced to 14 men for the final 10 minutes and Damian Penaud's sucker punch sealed a 25-14 victory for Les Bleus at the Stadio Olimpico.
Penaud produced a tremendous tackle to deny Marco Zanon a debut try – with Camille Chat having been sent to the sin bin following repeated infringements – and the France wing rubbed salt in the wound by racing clear in the 79th minute to put the seal on the hosts' 22nd straight Six Nations defeat.
Antoine Dupont and Yoann Huget crossed either side of half-time to put France in control, but Tito Tebaldi set up a tense finale by closing the gap to six points in the 55th minute.
However, Penaud came to the fore in sensational fashion with his team at a numerical disadvantage, denying Italy even a losing bonus point when a rare victory had seemed within reach.
Early Italy pressure and a sloppy start from France enabled Tommaso Allan to slot through a pair of penalties, but Maxime Medard and Penaud combined to send Dupont over the line in the 16th minute.
Guilhem Guirado appeared to sustain a rib injury and was replaced by Chat before Zanon was denied a try when Allan's grubber rebounded off the padding around the post, with Italy twice more failing to touch down before half-time.
Huget raced in on the left wing following a terrific pass from Romain Ntamack but Italy managed to string some phases together and hit back when Tebaldi barged over following a sensational dummy.
Allan was unable to convert and, after Leonardo Ghiraldini was taken off on a stretcher with a support on his right leg before the hour mark, Ntamack's drop goal gave France a six-point cushion.
Tebaldi knocked on as he stretched for the line in search of a response and a grinning Zanon was denied by a last-ditch tackle from Penaud after Chat was sent to the sin bin.
Italy again came up short and when Ntamack brilliantly beat Jayden Hayward to a high kick and offloaded to Penaud as France were not to be denied their first away win in the Six Nations since 2017.
Italy rue wasted opportunities
With World Rugby pushing for the Six Nations to introduce promotion and relegation and this week announcing details of its Nations Championship concept, Italy would have loved to respond with a strong result.
However, they were unable to avoid finishing without a win for the fourth successive edition after failing to make the most of sustained spells of pressure inside France's 22 during the first half and in the last 10 minutes.
No party for Parisse
Sergio Parisse became the first player in history to captain his country 50 times in the Five/Six Nations on Saturday but was once more on the losing side in what could well be his final outing in the competition.
The 35-year-old number eight, who is expected to retire from international rugby after the World Cup, broke the record for the most Six Nations appearances this year, but some costly errors near the try-line in the opening period let France off the hook.