The deadlock at the Nou Camp was broken by the visitors after 31 minutes when Falcao outpaced Sergio Busquets before chipping brilliantly over Valdes.
Barcelona responded when Adriano stroked the ball into top corner of the net five minutes later and then took the lead before the break courtesy of Busquets. Lionel Messi finished the scoring for Barcelona in the second half, hitting the net in the 57th and 88th minute.
Real were desperate for a victory to stay in touch at the top but were unable to clear a corner which fell to Albin who smashed it in from close range. They now trail Barca by 13 points.
Espanyol scored first when Sergio Garcia beat two defenders before finding the bottom corner of the net. Cristiano Ronaldo equalised before the break after receiving Sami Khedira's cross from the right and firing across Kiko Casilla.
AC Milan were given a helping hand on their way to a 4-1 win over lowly Pescara, who gave away two own-goals, while Luca Toni scored twice as Fiorentina produced another impressive performance to beat bottom club Siena by the same score.
Mario Goetze opened the scoring for the visitors when he superbly drilled in through the legs of defender Andreas Beck and past 'keeper Koen Casteels in the 26th minute. However, they still trail leaders Bayern Munich by 12 points.