Guilhem Guirado scored the only try of the match as Perpignan extended Biarritz's miserable season at the bottom of the Top 14.
The 18-12 defeat was the eighth this season for Biarritz and their fourth at home, adding to a dire campaign were they seem definite candidates for relegation.
Friday's loss at home to Perpignan leaves them eight points adrift at the bottom of the Top 14, with the rest of the sides in the league still to play this weekend.
Problems at the scrum handed former Wales fly-half James Hook his second opportunity to go for goal in the 18th minute after an earlier miss, landing the penalty to put Perpignan ahead early on.
A reverse in scrummaging penalties saw Yachvili put Biarritz on the board with a kick of his own in the 24th minute, then putting the hosts into the lead after a second scrum penalty only a few minutes later.
Hook then levelled the scores with his second penalty of the night from 30 metres out on the stroke of half-time to leave things all square going into the break.
Yachvili's next kick after half-time put the Basque side back in front but it was their Catalan rivals who notched up the game's only try through hooker Guilhem Guirado, an effective rolling maul from the visitors proving unstoppable. Hook's conversion gave the visitors a 13-9 lead.
The fourth penalty from Yachvili cut the deficit to just a single point after 54 minutes, as Biarritz clung on to the hope of only a second win this season, but Yachvili missed a penalty ten minutes later that could have had the hosts in the lead.
Hook made no mistake from 43 metres out in the 71st minute, opening up a four-point gap on the scoreboard that Biarritz were unable to surmount.
Pens: Yachvili 4
Pens: Hook 3
Biarritz:15 Paul Couet Lannes, 14 Takudzwa Ngwenya, 13 Seremaia Burotu, 12 Damien Traille, 11 Johan Pietersen, 10 Daniel Waenga, 9 Dimitri Yachvili, 8 Ueleni Fono, 7 Tanguy Molcard, 6 Benoit Guyot, 5 Addison Lockley, 4 Erik Lund, 3 Francisco Gomez Kodela, 2 Jean Philippe Genevois, 1 Alexandre Menini,
Replacements: 16 Romain Ruffenach, 17 Thomas Synaeghel, 18 Mathias Marie, 19 Joshua Furno, 20 Yann Lesgourgues, 21 Julien Peyrelongue, 22 Benoit Baby, 23 Eugene van Staden,
Perpignan: 15 James Hook, 14 Joffrey Michel, 13 Lifeimi Mafi, 12 Sione Piukala, 11 Sofiane Guitoune, 10 Camille Lopez 9 Dewaldt Duvenage, 8 Justin Purll, 7 Alasdair Strokosch, 6 Jean Pierre Perez, 5 Guillaume Vilaceca, 4 Sebastien Vahaamahina, 3 Giorge Jgenti, 2 Guilhem Guirado, 1 Kisi Pulu,
Replacements: 16 Romain Terrain, 17 Sebastien Taofifenua, 18 Daniel Leo, 19 Luke Narraway, 20 Nicolas Durand, 21 Tommaso Benvenuti, 22 Richard Haughton, 23 Paulica Ion.
Referee: Dudley Phillips (Ireland)