Jon Ansotegui headed the hosts in front after 33 minutes, while Inigo Martinez doubled the lead, heading in a corner two minutes into the second half.
Jordan Loties made things even harder for Javi Gracia's side when he was sent off shortly after the second goal, while Antoine Griezmann later added the third, appearing at the back post to head in a corner.
With 10 minutes remaining Chory Castro increased the damage, and then Haris Seferovic completed the rout on 87 minutes.
Midfielder Ruben Pardo provided the assist for the first three goals, all of which came from set-pieces.
The hosts came into the game having thrown away a two-goal lead to draw 2-2 at Valladolid in midweek, while Osasuna had lifted themselves out of the relegation zone with a convincing win over Rayo Vallecano.
Roberto Torres had the first of few attempts on goal from Osasuna, shooting over the bar from range, while Alvaro Cejudo tested Real Sociedad goalkeeper Claudio Bravo from a free-kick.
Martinez, making a return to the side after missing the game with Valladolid, nearly broke the deadlock, heading a cross from Castro just wide of the near post.
Two minutes later, the opening goal arrived. Ansotegui directed a header from a Ruben Pardo free-kick on goal, and Fernandez was unable to keep it out.
La Real scored again just after the start of the second half. This time Pardo delivered a corner in for Martinez to meet, and on this occasion the defender's header was on target.
Things got worse for Osasuna only two minutes later. Loties brought down Carlos Vela just before the Mexican was about to reach the area and was shown a straight red card.
Fernandez then made an outstanding save to keep out a driven effort from Pardo from outside the area and force a corner.
But the young Pardo was again a menace from a dead ball situation. He put in an in-swinging corner which Fernandez failed to deal with, and Griezmann was waiting at the back post to head home from a few yards out.
Javi Gracia's side were now on the ropes, and La Real smelt blood. Castro could have got a fourth on two occasions but missed the target, although he eventually got the goal he craved.
Seferovic ran towards goal and resisted challenges before playing in Castro, and the forward skipped past the outrushing Fernandez and chipped the ball into the net with his right foot.
The Swiss striker then got a goal of his own, finishing off a low cross from Jose Angel from six yards out.