Wales Under-20s made it two Six Nations wins out of two as they overcame France 27-13 in muddy conditions at Clermont's Stade Marcel Michelin.
The visitors produced a sparkling first-half performance followed by a battling rearguard action.
Sion Bennett, Cory Allen and Rhodri Williams all crossed to give Wales a 21-6 lead at half-time.
Wales survived two sin-binnings and Maxime Wieprecht's try for France as Sam Davies kicked them to victory.
Flanker Bennett was gifted the opening try after seven minutes, before centre Allen burst through after 28 minutes.
Scrum-half Williams then snapped up another moments later after a superb run by wing Ashley Evans, as Wales led 21-6 at the break.
France's scrum put Wales under intense pressure in the second half with Wales props Nicky Smith and Gareth Thomas both sin-binned.
Wing Wieprecht pulled a try back after 51 minutes for France but a drop-goal and penalty by fly-half Davies, to add to his three first-half conversions, gave Wales enough of a platform to hold on fairly comfortably in the end.
France: Mallet; Fernandez, Regard, Dussartre, Wieprecht; Selponi, Serin; Tauleigne, Camara, Babillot, Jedrasiak (capt), Aliouat, Cotet, Ruffenach, Vartanov.
Replacements: Tolofua, Baille, Valette, Cerqueira, Domenech, Vialelle, Lacroix, Bastien.
Wales: Dion Jones (Scarlets/Llanelli); Ashton Hewitt (Dragons/Newport), Cory Allen (Blues/Cardiff), Steffan Hughes (Scarlets/Llanelli), Ashley Evans (Ospreys/Bridgend); Sam Davies (Ospreys/Swansea), Rhodri Williams (Scarlets/Llandovery); Nicky Smith (Ospreys/Swansea), Elliot Dee (Bedwas), Nicky Thomas (Ospreys/Swansea), Carwyn Jones (Scarlets/Carmarthen), Rhodri Hughes (Ospreys/Swansea), Sion Bennett (Scarlets/Carmarthen), Daniel Thomas (Scarlets/Llanelli), Ellis Jenkins (capt, Blues/Cardiff).
Replacements: Ethan Lewis (Blues/Cardiff), Gareth Thomas (Scarlets/Carmarthen), Dan Suter (Ospreys/Bridgend), Jack Jones (Ospreys/Rovigo), James Benjamin (Bedwas), Joshua Davies (Dragons/Bedwas), Jordan Williams (Scarlets/Llanelli), Thomas Pascoe (Blues/Pontypridd).
Referee: Giuseppe Vivarini (Ita).