Dan Biggar's second-half try was enough for Wales to edge past France 20-13 in a nervy affair at the Stade de France.
While Wales dominated territory and possession in the first half, their biggest advantage was Leigh Halfpenny, who was virtually flawless from the kicking tee, unlike opposite number Camille Lopez.
Leading 6-3 at the break, the Welsh seemed in total control when Biggar went over with 15 minutes to go to make it 17-6, but France responded with a try through Brice Dulin.
Still, les Bleus had given themselves too much to do, and a final Halfpenny penalty eight minutes from time sealed a fourth-straight win for Wales against France.
That means that Wales are very much back in contention for the Six Nations title, ahead of their home game with Ireland in a fortnight, while France will likely find themselves finishing in the bottom half of the table for the fourth-straight year of under-fire Philippe Saint-André's reign.
Despite an early knock-on, it was France who made the better start, Yoann Huget putting in a thumping hit on Liam Williams before Eddy Ben Arous showed his ability at the breakdown to win a penalty.
However from their first set move there was a mix-up in midfield with Wesley Fofana's dummy run leading to an obstruction which allowed Wales to clear their lines.
Wales had made the decision to use Jamie Roberts early and often in midfield, but it was after a series of pick-and-goes in midfield that Wales earned the first kickable penalty, with Romain Taofifenua penalised for going off his feet. From in front Halfpenny was never going to miss and Wales went 3-0 up.
France responded with their first dangerous attack, Rémi Lamerat almost going clean through in midfield but for a desperate tap tackle by Sam Warburton. Then after an unsuccessful maul a cross-kick looked set to put Huget in but Williams got across well to cover.
Still, les Bleus were the more dominant team in terms of territory and were soon back on level terms when the Welsh rushed up too quickly in defence at a scrum, giving Lopez a penalty in front of the posts.
While they were back level, France were dealt a blow when Lamerat was forced off, seemingly having not recovered from a knock picked up when he broke through earlier. In his place came Mathieu Bastareaud to resume his partnership with Fofana.
It was a fairly even affair but France could have moved in front after 25 minutes when Warburton was penalised in a ruck. Morgan Parra took the quick tap and the Welsh weren't back ten. However from 45 metres out, Lopez's effort was inches to the left.
Wales responded, almost scoring when Dulin struggled to deal with a grubber through, bringing back memories of George North's opener in Cardiff last year. France survived, but conceded a penalty a minute later, Halfpenny on target to make it 6-3 after half an hour.
Back came the French again, and they thought they had the first try through Huget when he shrugged off three tackles to go over in the corner. It was brought back though, with Lopez's long pass having drifted forward to put the winger away.
Wales' best chance of the half came when George North was put into space on the right, but having got away from Sofiane Guitoune, he was well-stopped by Dulin, who put his body on the line to stop the giant winger.
And France should have been level at the break, the Welsh guilty of pulling down a maul, but Lopez pulled his attempt to the right as the visitors went into half-time leading 6-3.
A change of kicker early in the second half made no difference, with Parra pushing his penalty attempt wide.
A moment of real class followed when Lopez spotted a gap in the Welsh rush defence and delayed his pass to put Fofana away. He in turn found Huget but he couldn't get the ball back to Fofana and the Welsh survived. Still the French had started the second half on fire, with another series of quick drives into Welsh territory leaving their visitors scrambling only for Lopez's cross-kick to land agonisingly out of Huget's reach.
Another penalty a minute later, with Wales seemingly at breaking point, allowed Lopez to deservedly bring les Bleus level.
It didn't last long through, with Wales coming back with their first real maul of the evening, and earning a penalty which Halfpenny slotted.
That seemed to be just what Wales needed, and they scored the first try on the hour after some more great work by Rhys Webb. He spotted a gap at a ruck and broke before feeding Dan Lydiate on his shoulder. The centre gave the ball straight to Biggar who had enough pace to go over in the corner.
Halfpenny was off-target with the conversion, but got his radar back with another penalty as France failed once more to defend a Welsh maul legally.
France looked done, but finally ended their long wait for a try against Wales when Dulin went over in the corner. After an interminable sequence in the Welsh 22, Lopez put Dulin away on the left and he dived under Taulupe Faletau's desperate tackle. From the touchline on the wrong side, Lopez found his kicking boots, bringing France back to 17-13 with just over ten minutes to go.
Wales responded with a powerful scrum, countering the big French replacements, and Halfpenny pushed the lead back up to seven points.
France came back once more, and threatened without working their way back into the Welsh 22. And after a mess of a scrum, the visitors were able to see it out to stay in the hunt for the title.
As for les Bleus, they looked more dangerous than against the Scots, but paid for their indiscipline within range of the posts yet again, and a lack of a top-class goal-kicker when faced with Halfpenny.
Man of the match: It was a real team effort from the Welsh, but Leigh Halfpenny's goal-kicking was the difference between the sides. The full-back was a stark contrast to Camille Lopez who struggled from the tee.
Moment of the match: There was always a feeling that Rhys Webb would make one snipe, and it proved the decisive one. He spotted Sébastien Tillous-Borde a little out of position, and within seconds Dan Biggar was over.
Villain of the match: No nasty stuff to report.
Pens: Lopez 2
Pens: Halfpenny 5
France: 15 Brice Dulin, 14 Yoann Huget, 13 Rémi Lamerat, 12 Wesley Fofana, 11 Sofiane Guitoune, 10 Camille Lopez, 9 Morgan Parra, 8 Damien Chouly, 7 Bernard Le Roux, 6 Thierry Dusautoir, 5 Yoann Maestri, 4 Romain Taofifenua, 3 Rabah Slimani, 2 Guilhem Guirado, 1 Eddy Ben Arous.
Replacements: 16 Benjamin Kayser, 17 Uini Atonio, 18 Vincent Debaty, 19 Jocelino Suta, 20 Loann Goujon, 21 Sebastien Tillous-Borde, 22 Rémi Talès, 23 Mathieu Bastareaud.
Wales: 15 Leigh Halfpenny, 14 George North, 13 Jonathan Davies, 12 Jamie Roberts, 11 Liam Williams, 10 Dan Biggar, 9 Rhys Webb, 8 Taulupe Faletau, 7 Sam Warburton (c), 6 Dan Lydiate, 5 Alun-Wyn Jones, 4 Luke Charteris, 3 Samson Lee, 2 Scott Baldwin, 1 Gethin Jenkins
Replacements: 16 Richard Hibbard, 17 Paul James, 18 Aaron Jarvis, 19 Bradley Davies, 20 Justin Tipuric, 21 Mike Phillips, 22 Rhys Priestland, 23 Scott Williams.
Venue: Stade de France, Paris
Referee: Jaco Peyper (South Africa)
Assistant Referees: JP Doyle (England), Marius Mitrea (Italy)
TMO: Simon McDowell