The Spain international, previously on Espanyol's books during a 2015-16 loan spell, found a way through 41 minutes in against his former club for what proved to be the winning moment.
Los Blancos toiled in the second half and could have extended their advantage, but Espanyol also had a big chance of their own as Borja Iglesias hit the crossbar with goalkeeper Thibaut Courtois beaten.
The home side should have been ahead with five minutes played, only for Isco to shin the ball wide of goal when picked out in the middle.
One of the players brought in nearly took full advantage, as the ball was worked to Pablo Piatti and he fired it wide of the target.
Despite dominating possession in the first half, Real - two points better off than this stage last season heading into the match - were struggling to create any clear-cut openings in the first half.
That near-miss for the Periquitos may have acted as a wake-up call for Madrid, as five minutes later they were in front through Asensio's drilled finish.
The Spanish attacker took Luka Modric's deflected shot in his path and made no mistake - VAR ruling that he was not standing in an offside position.
Building on their strong end to the first half, Real nearly doubled their advantage early in the second period as Modric's shot was saved by Diego Lopez.
Isco then curled one wide as the European champions looked for a killer second, but complacency then began to creep in and Espanyol should have profited.
Sergio Ramos was caught in possession at the back and Iglesias was through on goal, but his chipped attempt over Courtois came back off the crossbar.
The experienced centre-back was kept out by a good Lopez save at the other end of the field as he looked to take matters into his own hands, and the Espanyol keeper was also equal to substitute Marcos Llorente's shot.
Espanyol probed away in the closing stages to no avail, leaving them without a win here since 1996, while Madrid climb above Barcelona into top spot ahead of the champions' game in hand against Girona on Sunday.
REAL MADRID (4-3-3): Courtois; Nacho, Ramos, Varane, Odriozola; Casemiro, Modric, Ceballos (Vazquez 62'); Isco (Llorente 78'), Benzema (Mariano 59'), Asensio
ESPANYOL (4-5-1): Diego Lopez; Javi Lopez, Naldo, Hermoso, Vila; Perez (Garcia 70'), Marc Roca, Darder (Sanchez 55'), Granero, Piatti (Baptistao 54'); Iglesias