From the start, FC Porto midfielder Hector Herrera forced Canada goalkeeper Milan Borjan into an early save with a shot from the edge of the box.
Herrera then teed up a backheel for Andres Guardado, who fired at Borjan as Mexico chased their first goal of the night.
In the 32nd minute, Miguel Layun, whose shots from distance had already troubled Canada, whipped in a fine ball from the left and Javier "Chicharito" Hernandez burst on to it in front of a defender to head home the breakthrough.
The Mexican pressure started to tell moments later when Chicharito and Hector Herrera crashed consecutive shots into the woodwork.
El Tri at last took a deserved two-goal lead in the 39th minute through 20-year-old Hirving Lozano, who raced on to Chicharito's neat pass to rifle a shot beyond Borjan.
In the second half, Canada stirred themselves together, with Cyle Larin calling Alfredo Talavera into action with a shot from outside the area before the visiting side added a third in the 72nd minute.
Jesus Molina fed Jesus "Tecatito" Corona inside area and the winger arrowed a shot past Borjan for the 3-0.
Adam Straith went close for Canada late on with a header from inside the area, but that was as good as it got for the hosts as Mexico clinched their third straight victory in the group.
Both Mexico and Canada will meet again on Tuesday at the Estadio Azteca, with El Tri needing just a win to reach the next round of World Cup qualifying.