VANCOUVER — David Villa scored on a penalty in stoppage time Saturday as New York City FC stunned the Vancouver Whitecaps 2-1.
The winner came after Vancouver captain and second half substitute Pedro Morales scored on a penalty of his own in the 88th minute.
Villa sent Whitecaps goalkeeper David Ousted the wrong way for his 17th goal of the season.
Frank Lampard had the goal for New York City, his second in Major League Soccer.
The former Chelsea midfielder took a low cross from Spanish defender Angelino in the 29th minute and fired a one-timed shot past Ousted.
The play was started by Andrea Pirlo, another one of New York City's global superstars. Pirlo fed Angelino with a pinpoint ball over the top and down the right side.
Lampard, Pirlo and Villa, the club's third big-name signing for its first season in MLS, were the talk of Vancouver all week and didn't disappoint in an end-of-your-seat match on the artificial turf at B.C. Place Stadium.
Lampard — who was capped 106 times for England and was playing in just his seventh game in MLS — along with Pirlo, was given time and space to operate in the centre of the pitch for long stretches.
There was a large group of Chelsea supporters with a banner in one of the corners at B.C. Place Stadium, while Lampard, Pirlo and Villa jerseys dotted the sellout crowd of 21,000.
Vancouver (15-12-3), which is in a battle for first overall with the regular season winding down, sits a point ahead of FC Dallas and the Los Angeles Galaxy for top spot in the Western Conference. Dallas and L.A., each with a game in hand on the Whitecaps, play on Sunday.
The Whitecaps were coming off a 3-0 home loss to the Seattle Sounders in MLS last weekend before falling to the same team by the same score on the road in midweek with a youthful squad that ended Vancouver's CONCACAF Champions League hopes.
New York City (10-14-7), in a fight for its playoff life in the East, won its third straight game and seems to be coming together with the 37-year-old Lampard, 36-year-old Pirlo and 33-year-old Villa — who will make a combined US$14 million this season — all healthy and available.
Lampard had another chance just before halftime, with Pirlo floating a ball off a corner to the edge of the penalty area, but he could only sky his shot high.
Vancouver came close in the 50th minute, but Kendall Waston saw his header off a free kick brilliantly stopped by New York City goalkeeper Josh Saunders.
Pirlo picked up a yellow card for kicking the ball away in the 63rd minute, and Vancouver's Kekuta Manneh flashed a shot wide that had Saunders at full stretch just seconds later.
The Whitecaps kept up the pressure and had a great chance in the 71st, but Jordan Harvey scooped a shot from in close over the crossbar.
Second-half substitute Octavio Rivero then sent a header over the bar three minutes later before the late drama.
Follow @JClipperton_CP on Twitter
Joshua Clipperton, The Canadian Press