David Villa, Andres Iniesta, Lionel Messi and substitute Bojan Krkic were the scorers as Barcelona put on an exhibition of the quick-touch football that guided it to the last two league titles.
Messi threaded the ball to Pedro Rodriguez in the ninth minute and Villa was alone inside the box to redirect the centering pass into the roof of goal for his ninth of the season.
Iniesta charged into the area in the 33rd, laying off to Pedro who returned it for the Spain midfielder to beat Claudio Bravo with a low shot inside the near post while never breaking stride.
The Spanish champion had its way inside Sociedad's area as its crisp passes into little space always seemed to find a teammate.
Sociedad looked like just another Camp Nou spectator at times as Xavi Hernandez, Messi and Iniesta _ all shortlisted for the world player of the year award _ orchestrated attack after attack, with Villa and Pedro often denied by Bravo or scrambling defenders.
Messi started the third goal from just inside the Sociedad half in the 47th, the Argentina forward exchanging several passes with Daniel Alves before slotting home.
Messi, who hit the post in the 78th, tied Cristiano Ronaldo's goal tally in the 87th with a typically clever run past four defenders inside the area before firing a left-footed shot past Bravo inside the far post. Messi has 27 goals in all competitions.
Barcelona, which has outscored opponents 26-0 in its last six games in all competitions, leads with 40 points from 15 games.
Bojan scored the last from an individual effort in injury time.
Mesut Oezil, Ronaldo and Angel Di Maria scored for Madrid to stay two points behind.
Zaragoza had chances early at La Romareda stadium but Madrid took control with Oezil's 15th-minute goal as the Germany playmaker capped a quick breakout by tucking a shot from the right under Leo Franco.
Franco was left flat-footed in the 44th as Ronaldo dipped his free kick over the defensive wall and into the empty side of goal for the Portugal international's league-leading 17th goal.
Di Maria made it 3-0 three minutes after the break by shooting over Franco as the Zaragoza goalkeeper raced out to try and cut off the Argentina forward after Xabi Alonso had played him clear into the area.
Ricardo Carvalho was booked for halting Nicolas Bertolo's run inside the area and Gabriel Fernandez stepped up to beat Iker Casillas _ playing his 400th league game _ from the penalty spot for Zaragoza's goal in the 54th.
Zaragoza coach Javier Aguirre remained without a victory after four games.
Earlier, Fernando Llorente and David Lopez scored second-half goals as Athletic Bilbao rallied to beat Espanyol 2-1 and deny it the chance to move into third place.
Espanyol striker Pablo Osvaldo capped a slick buildup in the 33rd minute by firing past Athletic goalkeeper Gorka Iraizoz to put the visitors on course for a first win at the San Mames stadium since 2001.
Lopez's 56th-minute entrance spurred the hosts on as Llorente made up for a wasteful miss by powerfully heading past Carlos Kameni for the 73rd-minute equalizer.
Lopez then curled in a perfectly taken free kick for the 78th-minute winner and the Basques' fifth straight home win.
Espanyol stayed on 28 points _ two behind third-place Villarreal _ while Athletic joined Sociedad in eighth with 22 points.
Also, David Trezeguet led Hercules' own second-half rally as the French striker scored the first of four goals over a 15-minute span in a 4-1 win over Malaga.
Sebastian Fernandez put Malaga ahead after 12 minutes at the Jose Rico Perez stadium before Trezeguet coolly backheeled home Nelson Valdez's centering pass in the 66th to begin the rally.
Royston Drenthe scored a penalty three minutes later before Abraham Paz and Kiko Femenia capped a Costa del Sol derby win.
Also, Sporting Gijon rallied to draw against Levante 1-1 and Oscar Serrano returned from a seven-month knee injury layoff to score two minutes into injury time as Racing Santander won 1-0 at Mallorca.
In Saturday's games, it was: Getafe 1, Villarreal 0; Sevilla 1, Almeria 3; and Atletico Madrid 2, Deportivo La Coruna 0.
Valencia plays Osasuna on Monday.