© Getty Images
The visitors started well as David Lopez looked to create a chance inside the opening two minutes, before Victor Sanchez stole the ball away from Andres Iniesta, but was unable to set up Thievy Bifouma.
The Spanish champions struggled to get their attack going in the opening stages of the match, running at their opponents, but rarely getting in behind their back four.
Moreno prevented another potential goal-scoring opportunity later in the opening half as Alexis Sanchez tried to tap in from a Dani Alves cross.
After a quiet spell in the second half, Messi came close to giving the home side the lead as he looked to head in from an Alves delivery, but Casilla was able to tip it wide.
Sanchez was able to give Barcelona the lead in the 68th minute, turning the ball into the net from a well-placed Neymar cross.
Garcia had a chance himself inside the final 10 minutes, attempting to curl the ball into the top corner, but Victor Valdes made the save to protect the home side's lead.
Pedro almost doubled the lead in stoppage time, evading Espanyol's defenders before smashing the ball towards goal, but Casilla was able to punch the ball behind.
The result leaves Barcelona four points clear at the top of the table.