Wales survived a scare at the start of each half to overcome a spirited Canada 32-23 at York University Stadium.
An under-strength Wales side, featuring only five players with more than 10 international caps and two debutants in Scarlets pair Jonathan Davies at centre and Daniel Evans at full-back, came from 6-0 down after 14 minutes to lead 16-9 at half-time and then shipped an early second-half try before regaining their composure to run out winners.
It was another hard-fought victory against a side which had troubled the Welsh at the Millennium Stadium in Cardiff last November before eventually going down 34-13.
The margin was closer this time, with Wales failing to withstand early Canada pressure and going behind early to two penalties from full-back James Pritchard.
Wales found their rhythm and struck in the 17th minute when wing Chris Czekaj went over for the opening try.
Scrum-half Gareth Cooper kicked over the top and when Canada wing Sean Duke came under pressure from centre Andrew Bishop, he spilled the ball to Czekaj in the corner, leaving the Wales wing to scoop up the ball and run over.
Fly-half Dan Biggar slotted home the conversion and added a penalty soon after as Canadian lock Mike Burak was sin-binned following an infringement at a ruck as Wales took a 10-6 lead.
Biggar added another after 27 minutes and restored the seven-point advantage with his fourth successful kick of the opening half after Pritchard kicked his third to leave Wales leading 16-9 at the break.
Dwayne Peel replaced Cooper at scrum-half for the start of the second half but it was Canada who started brightest. A loose pass from Robin Sowden-Taylor inside the home side's half fell into Canadian hands, allowing Nanyak Dala to carry the ball into Welsh territory before finding scrum-half Ed Fairhurst who took out full-back Evans with a pass to Duke for the try.
Pritchard converted and the sides were level again at 16-16.
Again Wales took time to find their feet but when they did they looked impressive as wing Tom James collected a high ball deep in his own half and broke through to the Canadian 22.
Biggar nearly touched down in the corner only for a saving tackle from Duke. The ball went back along the Welsh line and James popped up on the left to earn his reward with his first try for Wales. Biggar converted and added another penalty and Wales were back in front, 29-16.
The tourists allowed Canada back into it on the hour when, to the delight of the 8,450 crowd, Fairhurst finished off a great move from former All Black Kieran Crowley's side with a try, Pritchard converting to bring the score to 29-23.
Wales grafted for the remainder of the game and thought they had a try when substitute front row Gareth Williams appeared to burrow over the line in the 72nd minute, only for a video review to disallow the score.
Wales still added points as Australian ref Matt Goddard brought the play back for a penalty in front of the posts which Biggar converted for the final score of the game.
Wales next travel to Chicago for a Test next Saturday against the USA.