Ashtone Morgan gave the Reds the lead before a series of calls and incidents went against the Reds, including a disallowed goal, an injury to Sebastian Giovinco and the sending off of coach Greg Vanney.
David Villa and Maxi Moralez looked to have earned City the win before Jordan Hamilton was fouled in the box in the dying stages, allowing Vazquez to equalize.
The Reds took the lead when Ben Spencer and Marky Delgado forced an opening on the right and Spencer’s deflected cross was volleyed in by Morgan.
In a fairly even first half, Giovinco tested Sean Johnson from 20 yards and Alex Bono made an excellent save to deny Tommy McNamara.
Giovinco then missed an excellent chance to double Toronto’s lead from a Morgan cross and injured himself in the process, with Jay Chapman coming on to replace him.
Giovinco out with a "lower-back contusion," I'm told. Being evaluated. #TFCLive— Kurtis Larson (@KurtLarSUN) July 20, 2017
It would get worse before the break; Villa drew New York City level by firing a typically precise shot beyond Bono from the edge of the box.
Toronto looked to have started the second half perfectly when Spencer’s header hit Jay Chapman and went in, but the referee decided that Chapman was offside over a minute after the ball had hit the back of the net.
Moralez then gave New York City the lead courtesy of a fortunate deflection off the legs of Chris Mavinga.
But the Reds were not to be beaten. As injury time approached, Raheem Edwards’ fine ball into the box was expertly brought down by Hamilton, who was subsequently tripped from behind.
Vazquez did the business from the spot.