Three goals by the Argentinian, Juan Esnaider, highlighted a sparkling performance by Zaragoza, who frequently looked likely to swamp Barcelona completely in front of one of their biggest crowds of more than 43,000.
Two goals by Romario and one by Michael Laudrup kept the champions just in the game but they never looked likely to close the gap.
Barcelona's defeat left Deportivo La Coruna even more securely at the top of the table after their 2-0 home win over Sevilla.
Deportivo are six points clear of Barcelona and seven ahead of Sporting Gijon, beaten 2-0 by Atletico Madrid.
Ajax tightened their grip on the Dutch League with a 1-0 away win over mid-table Sparta Rotterdam. Frank de Boer netted the winner.
Victory gave Ajax a six-point lead over Feyenoord, who have two games in hand.
Eintracht Frankfurt, who drew 1-1 with Nuremburg, leapt over Bayer Leverkusen,
1-0 losers at Borussia Dortmund, and back to the top of the restarted German League.Reuse content