Vancouver won for the third time in four matches to climb above the red line in the Western Conference standings. The Whitecaps beat RSL in Sandy, Utah, for just the second time in their club's history.
Salt Lake dropped its second straight home match and suffered its third loss in four matches overall. RSL has been outscored 7-1 during the two-game skid.
Salt Lake pressured Vancouver's half early and often in the first 45 minutes. RSL came close to getting on the board a few times and outshot the Whitecaps 13-2 before halftime. Vancouver goalkeeper Thomas Hasal conjured up a pair of critical saves to preserve a clean sheet during the first half.
RSL's inability to finish chances finally burned the club in the 53rd minute.
A ball was fed over the top of the defense to Cristian Dajome. After tracking it down before the ball reached the end line, Dajome squared the ball and fired it up to the top of the 6-yard box. Milinkovic latched onto the pass and quickly slotted it home for the go-ahead goal.
Making a comeback became complicated for Salt Lake after Kyle Beckerman got sent off in the 63rd minute. Beckerman drew his second yellow card of the match after video review showed he kicked Hasal's head in a scrum for the ball in the 6-yard box. His ejection left RSL with only 10 men over the final 27 minutes.
Justin Meram came to the rescue for Salt Lake and leveled the score in the 81st minute. Maikel Chang floated a pass into Meram near the back post and he headed it forward for his third goal of the season.
The Whitecaps regained the lead in the 84th minute on Cavallini's goal. Fredy Montero sent a cross to the top of the 6-yard box where Cavallini latched onto it and tapped it home.
RSL finished with 25-8 advantage in total shots over Vancouver, but only a 4-3 edge in shots on goal.