The Whitecaps improved to 10-7-7, while avenging a loss to Real Salt Lake in Utah two weeks ago. Salt Lake (13-9-3) lost its second straight game and fourth straight on the road.
Vancouver trails second-place Salt Lake by five points in the Western Conference.
Camilo scored Vancouver’s first goal in the 58th minute to end a 12-game scoring drought. It was his fourth goal overall and first since May 19 against Seattle.
The Brazilian winger led Vancouver with 12 goals in 2011, but has struggled this season while battling a thigh injury.
Dane Richards scored Vancouver’s other goal, which proved to be the winner, as he fired in Camilo’s one-touch pass in the 64th minute. Nat Borchers scored for Salt Lake in stoppage time.
Vancouver goalkeeper Brad Knighton made his first start for the Whitecaps in place of the suspended Joe Cannon. He has yet to allow a goal in three league appearances this season.
Knighton had not started an MLS game since October 2010, when he was with the Philadelphia Union. He spent all of last season with the second-tier Carolina RailHawks.
Salt Lake goalkeeper Nick Rimando denied Vancouver a goal in the 14th minute as he blocked a long, hard shot from Camilo with his arms.
In the 25th minute, Salt Lake’s Alvaro Saborio headed a Javier Morales shot off the goalpost. Knighton and captain Jay DeMerit collided with Saborio and lay on the field for a few minutes while being tended by trainers.
DeMerit went off briefly and returned, drawing a large cheer from the crowd. But he appeared groggy and was replaced in the 31st minute by newly acquired central defender Andy O’Brien, who dressed for his first game.
Camilo put the Whitecaps on the scoreboard when Real Salt Lake defender Will Johnson’s clearing attempt bounced off Darren Mattocks in the 18-yard box and the ball came to him. Camilo promptly rolled a shot into the corner of the net.
Richards scored six minutes later. Mattocks started the play from the left corner of the 18 as he sent the ball to Camilo at the top of the box. Camilo then sent a lateral pass to Richards and he fired the ball just inside the right post.
Knighton preserved Vancouver’s two-goal advantage in the 66th minute as he blocked a Saborio shot and then grabbed the loose ball with O’Brien standing guard. It looked like he had earned a shutout in the 86th minute after he dove to stop Paulo Junior’s curling shot.
But Borchers headed in Junior’s cross from the left flank in the second minute of stoppage time after three were added. Salt Lake threatened again in the closing moments, but Robson intercepted a pass and raced with the ball just before the final whistle sounded.
NOTES: Whitecaps midfielder Gershon Koffie will be suspended for Wednesday’s game against Dallas after receiving his fifth yellow card of the season. He took down Fabian Espinola early in the second half. … A moment of silence was held before the game for late Columbus Crew midfielder Kirk Urso, who died at the age of 22 on Aug. 5 after collapsing in a bar in the Ohio capital. Urso’s funeral was held Saturday. As a result, a game between Columbus and Toronto slated for Saturday was postponed. … Just before the game started, the Whitecaps saluted the Canadian women’s Olympic team for its bronze-medal win over France. … Vancouver’s No. 3 goalkeeper Brian Sylvestre dressed as the backup.