NEW YORK, N.Y. - David Villa struck twice as New York City FC held on for a 3-2 victory over the Vancouver Whitecaps on Saturday.

Steven Mendoza scored the winner for New York City (2-3-4) in the 73rd minute, just 10 minutes after the Whitecaps tied the game at 2-2.

Christian Bolanos evened the game for Vancouver (3-5-2) by scoring his second goal in as many games. Octavio Rivero opened the scoring just 37 seconds into the match after teammate Nicolas Mezquida forced a turnover from NYCFC goalkeeper Josh Saunders.

It was Rivero's first goal of the season and the Whitecaps' second fastest goal in Major League Soccer history. Rivero had to leave the game shortly later after suffering a left ankle sprain.

Villa evened the game at 1-1 in the 35th minute after finishing inside the box after a Vancouver turnover in midfield. Villa scored his second goal six minutes later by volleying an Andrea Pirlo corner at the back post.

Kekuta Manneh drew a penalty in the second half but Bolanos' penalty kick attempt was saved by Saunders. Bolanos followed his shot and tapped in the rebound to even the game.

Mendoza fired a low strike into the near post after a cross from the left for the winner.

It was the third match in eight days for the Whitecaps with the team drawing 1-1 with Sporting Kansas City at home on Wednesday and shutting out FC Dallas 3-0 on April 23. Vancouver faces defending MLS Cup champion and rivals Portland Timbers on May 7. It's their first meeting since the Timbers eliminated the Whitecaps in last year's post-season.

Vancouver goalkeeper David Ousted managed just one save while Saunders had five saves.