Barca coach Pep Guardiola put his trust in youth and was repaid when twenty year-old Cristian Tello opened the scoring in his first full game for the club.
Lionel Messi extended Barca's lead on 72 minutes a minute before Carlos Vela pulled one back for Sociedad.
The game kicked off in freezing temperatures and burst into life on four minutes when first Messi was denied by Sociedad keeper Claudio Bravo, before Victor Valdes blocked from Diego Ifran at the other end.
Four minutes later and Barca were ahead when Tello beat the advancing Bravo to convert a slide rule pass from Messi.
Messi was the provider again on 26 minutes when it was Fabregas who shot just high and Sociedad were struggling to make any headway against the quick passing Barca.
Next it was Jonathan Dos Santos, starting his first league game of the season, who tried from long range and forced Bravo into a save.
On the stroke of half-time Dani Alves shot wide from close range and Messi had a shot blocked by Bravo seven minutes into the second-half.
Messi again was close to adding the second on 63 minutes when he rounded Bravo only for centre-half Inigo Martinez to block his goal bound effort, but he was to finally hit the target on 72 minutes.
The little Argentinean was quick to latch onto Dani Alves' chipped pass and beat Bravo with a flick of the left foot to make sure he did not complete four consecutive games without a goal.
Vela quickly grabbed one back for the visitors, coolly finishing an Antoine Griezmann pass, and the lead was back to the single goal it had been for nearly all the game.
Barca lost Sergi Busquets to what seemed to be a nasty knee injury in the closing stages but held on for the all important three points.
Earlier Real Madrid overcame windy conditions to win 1-0 at Getafe when Ramos out jumped Getafe defender Juan Valera to head home a Mesut Ozil corner for the only goal of the game on 18 minutes.
Without ever getting into top gear 'los blancos' did enough to deserve the points at the scene of Barcelona's only defeat this season, but they had to survive a clear shout for a penalty by the home team in the second period.
Madrid coach Jose Mourinho, repeatedly linked to a return to the Premier League in the last week, again refused to speak to the press afterwards and left his assistant Aitor Karanka to sum up the game.
"Sergio (Ramos) is a player with a lot of personality and he showed it tonight, it was not easy because of the conditions but we controlled the game throughout," he said.
Mourinho decided to leave Gonzalo Higuain, linked this week with Chelsea, on the bench, preferring Karim Benzema up front and recalled Xabi Alonso and stayed loyal to an improving Kaka in midfield.
Getafe goalkeeper Miguel Angel Moya had to be alert to stop a Cristiano Ronaldo free-kick on 35 minutes and three minutes later Miku went close at the other end with a header from a Juan Rodriguez free-kick, but chances were few and far between as both teams struggled to adapt to the conditions.
Getafe had a penalty claim turned down on 70 minutes when a Diego Castro shot appeared to strike Pepe's outstretched arm and their best chance to find an equaliser had gone.
Moya dived full length on 77 minutes to deny Higuain, who had replaced Benzema minutes before and Madrid played out the rest of the game comfortably holding on to their slim lead.
Earlier in the day Levante drew 1-1 at home to struggling Racing Santander to remain in fourth place in La Liga as Athletic Bilbao drew with Espanyol 3-3 in the clash between their two closest rivals.
The results means Levante stay ahead of Espanyol on goal difference with both teams on 32 points, four points behind 3rd-placed Valencia, who play on Sunday, and two points ahead of sixth-placed Bilbao.