Les Bleus overcame Rugby World Cup finalist England in their opening game at Stade de France and saw off Italy to start with two straight wins for the first time since 2016.
Gregory Alldritt crossed on the stroke of half-time after Matteo Minozzi had reduced the arrears after early scores for Teddy Thomas and Charles Ollivon.
Romain Ntamack's superb solo try then preceded a loss of concentration from France that was punished by Federico Zani.
Replacement scrum-half Baptiste Serin sealed the win with a dazzling individual effort, with Mattia Bellini's 79th-minute score insufficient for Italy to get a losing bonus point.
After opening the scoring with a penalty, Ntamack spotted Italy full-back Jayden Hayward in the defensive line and sent a grubber kick through for Thomas to touch down in the seventh minute.
Ntamack was unable to add the extras in high winds and missed another place kick before seeing his attempt to convert Ollivon's 18th-minute try come back off the crossbar.
Italy made the most of a rare venture into France's territory, Minozzi diving over in the right corner with Thomas punished for moving out of position.
Tommaso Allan's boot reduced the deficit to three points but Antoine Dupont's sensational pass sent Alldritt in on the left, with Ntamack needing a kind bounce off both uprights for his third successful kick.
Allan missed from the tee at the end of a spell of Italy pressure, but France moved quickly from a lineout and Ntamack spotted a gap to dart home before the hour mark.
Les Bleus sent five new forwards on from the bench and Zani dived at the base of the padding around the post in the 65th minute, but Italy was unable to salvage a first point since 2018.
The tension was eased when Serin took a quick tap penalty and chased down his own kick to cross in stunning fashion.
France lost Vincent Rattez to injury and saw Bellini touch down in the right corner at the death, but it was too late for Italy to avoid a 24th straight Six Nations loss.