Perpignan could have won by an even greater margin, leading 34-6 early in the second half, but Toulouse fought back to score two late tries.
James Hook kicked nine points for Perpignan while Farid Sid, Bertrand Guiry, Guilhem Guirado, Alasdair Strokosch and Richard Haughton all touched down to complete the win.
Toulouse’s loss also helped Clermont move up to second, despite Clermont needing a late try from Naipolioni Nalaga to beat Mont-de-Marsan 14-6.
Castres snapped Biarritz’s four-game winning streak with a 28-13 triumph at Stade Pierre Antoine to leave Toulon, who won away to Montpellier on Friday night, four points clear at the top of the table.
Scrum-half Rory Kockott proved the difference for the hosts as he came on to score 16 points, a converted try and three penalties, and power his side to victory after Biarritz had led 13-12 at the interval.
Racing Metro secured their first away win of the season, sneaking into the top half of the table with a 25-18 win over Bayonne.