There was drama to the dying seconds at the Millennium Stadium as Wales zalmost came back from the dead to steal victory.
Twice Welsh players crossed the French line in injury time as they went for the kill, but on both occasions the Italian video referee Claudio Giacomel ruled 'no try'.
It was the Welsh skipper Scott Quinnell who thundered over after taking the ball over the back of a French line-out five metres from their line.
He drove throgh two tacklers, but Serge Betsen somehow managed to get a hand underneath the ball to deny Wales a try in the 82nd minute.
But the home side, showing the sort of fire and passion their supporters were hoping for after their massacre in Dublin, put in one final effort to release James on the left.
The Bridgend wing, who finished the game at centre, went for the corner, but was superbly tackled by Aurelien Rougerie. James got the ball over the line, but Rougerie had dragged him into touch just before he was able to touch down for what would have been the vital winning score.
Wales started like an express train and after Stephen Jones and Damien Traille had swapped penalties, Craig Quinnell drove through Gerald Merceron and Tony Marsh for a try after 10 minutes.
Jones added the conversion and it was all Wales for the opening quarter.
But the French kept their cool, gained control up front and worked themselves into the lead with a Merceron penalty and corner try by Tony Marsh.
That Marsh try came after some great approach work by both French props, Pieter De Villiers and Jean-Jacques Crenca, and the Kiwi-born centre wasn't finsihed with Wales.
Two more penalties from Jones to one from Merceron kept Wales 16-14 ahead, but Marsh sped over again for a try which Merceron converted to edge the French ahead four minutes before the break.
Jones cut the gap to two points with a fourth penalty before Wales had a catastrophic 10 minutes. Skipper Scott Quinnell was given a yellow card by Irish referee Dave McHugh after clattering into Nicolas Brusque after the French full back had kicked ahead and Merceron made it 24-19 to the visitors at the interval with his third penalty.
Then, two minutes into the second half, Traille kicked ahead for Rougerie to chase close to the Welsh line and he dived with Welsh full back Kevin Morgan for the ball.
Morgan came up with the ball, but McHugh went to the video referee and the Italian arbiter gave the try to France.
Merceron converted and then kicked a penalty to open up a 15 point gap before the Welsh skipper returned to the field.
Quinnell's return made a huge difference to the Welsh team and they got back into the game after 58 minutes when back row man Nathan Budgett crossed for a try after some neat approach work from Andy Marinos.
Jones converted, but with 10 minutes to play Merceron kicked his fifth penalty to make the Welsh task all the more difficult.
Full back Morgan was then given the benefit of the doubt by the video referee when he dived for the line with a French defender two minutes from time and Jones' conversion from a wide angle set up a thrilling final eight minutes.
Wales tried, but failed - and France move on face England in Paris in round three of the Lloyds TSB Six Nations Championship with two wins under their belt.
Scorers: Wales: Tries: Craig Quinnell, Nathan Budgett, Kevin Morgan; Cons: Stephen Jones 3; Pens: Stephen Jones 4.
GB7s women left their England base to train in Wales this week. Olympic Games hopeful Rachael Burford gives WRU TV's Graeme Gillespie her thoughts on Welsh teammate Jasmine Joyce - a 'one touch wonder'
The GB7s women's squad is currently training at Wales' Centre of Excellence where assistant coach Richie Pugh tells WRU TV's Graeme Gillespie some 'tough calls' will have to be made when it comes to finalising the 12 spots for Rio's Olympic Games.
Wales U20's Billy McBryde is looking forward to starting his first game against New Zealand this afternoon in the World Rugby U20 Championship where his side are looking to gain revenge from last week's pool defeat to the Kiwis.