The hosts found the scoreboard first, going straight to a 14-0 lead via a try from centre David Marty and the boot of fly-half James Hook.
Agen stayed well and truly in the contest as full-back Raphael Lagarde and centre Miguel Avramovic both scored tries to finish the first half at 14-13.
But, much as they tried, the visitors could not squeeze out another, falling to the wayside as Hook again edged Perpignan ahead, before wing Farid Sid and scrum-half Florian Cazenave scored a try apiece within a five-minute spell.
Hooker Guilhem Guirado put the result beyond doubt with just four minutes remaining to end his side’s commendable second half.
The result lifts Perpignan to seventh in the table while Agen still sit back in 12th.