Puebla took advantage of a defensive miscue to open the scoring in the 22nd minute. Christian Marrugo sent a cross into the box that defender Mario de Luna failed to deal with. The ball fell nicely for Lucas Cavallini, who brought it down on his chest and fired past Marcelo Barovero to make it 0-1 for the visitors.
The goal gave Puebla confidence but Necaxa soon settled into the game. In the 30th minute, the Rayos came close to equalizing through Carlo González, whose header forced an impressive save out of Moisés Muñoz.
Puebla then got into a good position with Francisco Torres finding Brayan Angulo in the box, but the Colombian’s shot from the six-yard box was awkward and off target.
In the second half, Necaxa had more possession as they pressed for a tying goal. Puebla’s best opportunity for an insurance goal came on the counterattack, with Alonso Escoboza ultimately denied by Barovero in the 74th minute.
Then, in the 79th, Necaxa tied it up. Roberto Alvarado got free on the right, got around a pair of defenders, and sent in a cross for substitute Pablo Velázquez, who made no mistake with his finish.
Neither team was able to go on to find a second goal as Necaxa and Puebla had to settle for a share of the spoils.
With the 1-1 draw, Necaxa reaches 13 points while Puebla reaches seven.
Necaxa: Marcelo Barovero, Igor Lichnovsky, Bryan Colula, Jairo González, Mario de Luna, Luis Pérez (Dieter Villalpando 61′), Manuel Iturra, Jesús Isijara (Matías Fernández 56′), Roberto Alvarado, Martín Barragán (Pablo Velázquez 74′), Carlos González.
Puebla: Moisés Muñoz, Erik Pimentel, Luis Venegas, Brayan Angulo, Alonso Zamora, Hugo Rodríguez, Patricio Araujo, Alonso Escoboza (Jonás Aguirre 81′), Francisco Torres (David Toledo 68′), Lucas Cavallini (Jerónimo Amione 64′), Christian Marrugo.