A set piece gave the visitors the lead in the 22nd minute. A free kick was sent in and then headed back towards the far post, where Alfredo Talavera failed to deal with. Pablo Míguez was there to head the ball into the empty net and give Puebla the 0-1 advantage.
Puebla then made it 0-2 shortly before halftime. Alexis Canelo’s initial shot was deflected by Talavera, but Jerónimo Amione was there to finish off the loose ball. In the aftermath of that goal, José Saturnino Cardozo – facing his old team – was ejected from the sidelines.
Toluca looked to react and they had a chance to reduce the deficit almost immediately, but Fernando Uribe’s header was well-saved by Cristian Campestrini.
The Diablos Rojos made two halftime substitutions as they looked to get back into the game, and they began to create some dangerous chances of their own. Then, in the 74th minute, Édgar Dueñas was called for a foul in the box on Pablo Barrientos, and referee Óscar Macías pointed to the penalty spot.
Barrientos himself stepped up to take the PK, and although Campestrini got a hand to it he couldn’t keep it out. Toluca was back in the game and the scoreline was 1-2.
But Toluca wasn’t able to build on that goal to find an equalizer. Instead, in the 80th minute, Francisco Torres put the game out of reach for the hosts when he made it 1-3 after some good play by Alexis Canelo.
With the 1-3 win, Puebla reaches nine points while Toluca still has 16.
Toluca: Alfredo Talavera, Rodrigo Salinas, Osvaldo González, Paulo da Silva, Efraín Velarde, Antonio Ríos (Rodrigo Gómez 63′), Rubens Sambueza, Gabriel Hauche, Pablo Barrientos, Carlos Esquivel (Sinha 45′), Fernando Uribe (Enrique Triverio 45′).
Puebla: Cristian Campestrini, Robert Herrera, Claudio Pérez, Édgar Dueñas, Carlos Gutiérrez, Francisco Acuña (Carlos Orrantía 83′), Pablo Míguez, David Toledo, Jerónimo Amione, Gabriel Esparza (Francisco Torres 61′), Alexis Canelo (Álvaro Navarro 91′).