Despite a valiant effort at a comeback, the Blaugrana suffered their second league defeat in 47 matches and a blow to their title hopes after a first-half flurry from the hosts
A first-half brace by Dejan Lekic gave Osasuna a magical start. The second period saw a flurry of goals as Alexis Sanchez reduced the deficit, only for Raul Garcia to restore a two-goal cushion. Cristian Tello made it 3-2, but Barca could not complete the comeback, and their La Liga aspirations look to be in tatters.
The Catalan side began the match with a modified starting XI as Sergi Roberto, Pedro and Thiago Alcantara started in place of Xavi, Andres Iniesta and Cesc Fabregas.
The changes hurt the Liga champions early on as Osasuna got off to a dream start. In the fourth minute, Raul Garcia received the ball on the edge of the 18-yard box and it flicked on to find a sprinting Lekic, who buried his strike past Victor Valdes to open scoring.
Pep Guardiola's men attempted to fight back but struggled to establish their quick, one-touch game on the frozen pitch.
The hosts did not sit back and settle for a solitary goal as they were soon two up. After being picked out by Raul Garcia on the right flank, Alvaro Cejudo looped in a cross which found a surging Lekic, who tapped past Valdes for his second of the night to send the home crowd into raptures.
The first half ended with the Blaugrana establishing dominance in possession but not being able to create any goal-mouth opportunities with it.
Guardiola made a few changes at the start of the second half but instead of bringing on Iniesta, Xavi, or Fabregas into the game, he introduced Isaac Cuenca and Tello as Carles Puyol and Pedro made way.
Although the changes may have bemused a few fans, they worked. Cuenca centred the his cross from the right and found an unmarked Alexis, who slid the ball past Fernandez to bring the Catalans back into the game.
But the goal did not faze Los Rojillos and instead, they marched towards their opposition's goal, once again to be rewarded. After a pass from Valdes was intercepted, Nino was picked out on the left. The experienced forward sent in a cross and Raul Garcia managed to beat Valdes to the ball at the near post, punishing the keeper for straying too far off his line.
The match continued to see-saw back and forth as the Blaugrana reduced the deficit once more. After being picked out on the right, Tello checked past his marker and blasted past Fernandez from close range into the top corner to make it 3-2.
Barcelona looked to have equalised when Alexis found the back of the net after Lionel Messi clipped in a cross, but the Chilean was adjudged to be offside by the linesman when the ball took a slight touch off Sergi Roberto. The away side continued to pressure their opponents until the final whistle, but they could not find an equaliser as they stumble to their second defeat of the season.
With the loss, Barcelona could find themselves 10 points adrift of top spot if Madrid beat Levante at home on Sunday. Osasuna's fantastic upset victory sees them temporarily move up to seventh place.