The hosts doubled their advantage at the start of the second half, Pardo sending the ball in again, this time finding the head of Inigo Martinez.
Jordan Loties tried to get Osasuna back into the match two minutes later, but his header went just high.
The defender was dismissed moments later for a challenge on Carlos Vela, but Griezmann was unable to find the target from the resulting free kick.
However, Griezmann was able to add Sociedad's third of the afternoon shortly after with another headed effort, nodding the ball into the top right corner.
With an extra man on the pitch, Sociedad always looked like adding to their score and were able to do so inside the final 10 minutes, with Castro tapping in from close range from a Haris Seferovic delivery.
Seferovic was able to add a goal of his own just before full time, turning the ball into the bottom corner after collecting a pass from Jose Angel.
The result leaves Sociedad seventh in the table, while Osasuna sit 16th.