After a dominant start to the match, El Tri didn’t take its first lead until the 40th minute when a cross from the right-hand side struck Zachary Brault-Guillard and ricocheted into the path of Roberto Alvarado, who smashed home Mexico’s opener.
Canada started the second half brightly with Alphonso Davies sending a fierce left-footed shot just wide of Guillermo Ochoa’s goal.
Moments later, Mexico struck again when Andres Guardado, who was was subbed on midway through the first half for the injured Erick Gutierrez, blasted in a superb long-range effort past Milan Borjan for the 2-0.
Raul Jimenez then missed a good chance to score a third when he struck the crossbar off a header following corner kick.
In the 75th minute, a mistake from Nestor Araujo put Jonathan David through, and with a short pass to Puebla striker Lucas Cavallini, Canada were suddenly just a goal back.
But just two minutes later, Andres Guardado wrapped up the game in outstanding fashion. Uriel Antuna, who tormented the Canada defense all game, twisted the defense inside out before leaving the ball to Guardado to fire in Mexico’s third.
Mexico are now atop of Group A with six points, and they will play their final group stage game versus Martinique on Sunday.