Waldouck's try proved to be a key moment at Adams Park
Wasps (12) 22
Pens: King 4
Perpignan (3) 14
Pens: N Laharrague 2, Meyer
Wasps produced a brave performance to overcome Perpignan and give themselves a great chance of qualifying for the Heineken Cup knock-out stages.
Alex King's superb goal-kicking supplied the platform for Wasps' hard-earned 12-3 lead at half-time.
And Dominic Waldouck's charge-down try on 61 minutes took Wasps well clear.
Ovidiu Tonita drove over with 10 minutes left to give Perpignan hope but missed kicks meant they left without a crucial bonus point.
Wasps selected a pack made up entirely of internationals, and the forwards - with Joe Worsley to the fore - put in a defensive performance worthy of their status in a match where try-scoring chances were few and far between.
Worsley gave an outstanding display in defence
King's first kick came on 12 minutes, but Laharrague struck back soon after to level the scores at 3-3.
But Wasps experienced pack gradually gained the upper hand at the breakdown, forcing a string of penalties which King was more than happy to convert from all over the pitch.
Wasps were starting to find holes in the Perpignan defence with Worsley's burst through the middle only stopped by a suspicious-looking trip from visiting scrum-half Nicolas Durand.
A clever break from full-back Danny Cipriani shortly before half-time gave King the opportunity to knock over his fourth kick from four attempts.
There was a worrying five-minute injury break for Phil Vickery - who took an accidental elbow to the face - at the start of the second half, but the England captain got back to his feet to resume at the coal-face.
Another Cipriani break caught the eye as he beat three players down the touchline before being hauled down.
King finished the match with a 100% goal-kicking record
King and Laharrague swapped penalties for a 15-6 scoreline before Waldouck's crucial intervention.
The youthful centre charged down Laharrague's clearance on halfway and got the perfect bounce to stroll through unopposed.
King's conversion took Wasps 22-6 clear to seemingly make the game safe, but Perpignan upped their efforts and saw flanker Tonita burrow his way over.
But a missed conversion from substitute Steve Meyer, who also missed with two other attempts, proved vital as Wasps kept Perpignan out of bonus point territory.
There was still time for a late scare as a line-out to the front led to Durand darting down the touchline, but a tremendous Tom Rees tackle snuffed out the danger.
Wasps travel to Castres next week knowing a losing bonus point should be enough to guarantee their passage to the last eight.
Castres claimed their expected bonus-point win over Treviso, scoring six tries in the other Pool One game on Saturday.
Jean-Baptiste Peyras-Loustalet scored a hat-trick in his side's 40-21 victory.
Wasps captain Lawrence Dallaglio on Wasps' away form:
"The prize for whoever goes through next week is huge and we are not a million miles from turning that corner.
"We have more losing bonus points than any other team (apart from Worcester in the Guinness Premiership).
"Beating Perpignan gives us a huge amount of confidence going into next week."
Perpignan captain Perry Freshwater:
"They are one of the best sides in Europe. They are always physically very, very fit and they play a faster game than we are used to and they do it very well.
"They will have gained confidence from today's performance and if they play with the same tempo they will be well placed.
"It is down to one game at the end and going to Castres is never an easy thing to do. But I'd be feeling fairly comfortable if I was in the Wasps team at the moment."
Wasps: Danny Cipriani; Paul Sackey, Josh Lewsey, Dominic Waldouck, Tom Voyce; Alex King; Eoin Reddan; Tim Payne; Raphael Ibanez; Phil Vickery; Simon Shaw, Tom Palmer, Joe Worsley, Jonny O'Connor, Lawrence Dallaglio (c)
Replacements: Joe Ward, Peter Bracken, James Haskell, Tom Rees, Simon Amor, Fraser Waters, Dan Leo.
Perpignan: Julien Laharrague; Christophe Manas, Jean-Phillipe Grandclaude, Gavin Hume, Samueli Dawai Naulu; Nicolas Laharrague, Nicolas Durand; Perry Freshwater (capt), Michel Konieck, Nicolas Mas, Colin Gaston, Olivier Olibeau, Grégory Le Corvec, Ovidiu Tonita, Guillaume Bortolaso.
Replacements: Marius Tincu, Sebastian Bozzi, Rimas Alvarez Kairelis, Richard Parks, Sylvain Dupuy, Steve Meyer, Viliami Vaki.