Luis Suarez broke the home side's resistance 15 minutes into the second half, before Lionel Messi hit a late double to add gloss to the scoreline.
"We have been patient and we created a lot of chances," coach Luis Enrique said after the match. "I am happy with the game I have watched."
Since beating Sevilla 2-1 on November 6, Barcelona has been held by Malaga, Real Sociedad and Real Madrid, after Sergio Ramos' last-gasp header denied it victory in El Clasico
Without the suspended Neymar, it was looking like another frustrating afternoon for Enrique's side, as an uncharacteristically profligate Messi spurned two gilt-edged chances when clean through on goal in the first half.
Sergio Leon then looked to have given Osasuna the lead after breaking free of Barcelona's defense, but watched on as his audacious chip struck Marc-Andre ter Stegen's crossbar.
In truth, it was more a case of when, not if, Barcelona would take the lead and Suarez finally broke the deadlock on the hour mark.
Messi found Jordi Alba's marauding run and the left-back played the ball across goal for Suarez to tap into an empty net.
As Osasuna heads dropped, Barcelona began to turn the screw and doubled its lead less than 15 minutes later.
Alba was once again the provider, this time squaring for Messi to steer the ball home at the near post.
The Argentine sealed the win with a magical third, wriggling free of four Osasuna defenders, before coolly floating the ball into the top corner.
"We are Barcelona and we are candidates for the league title," Suarez said. "We will always do everything to do that."
The Catalan club temporarily cut Real Madrid's lead at the top of La Liga to three points -- Zinedine Zindane's side restored the advantage to six by beating Deportivo La Coruña 3-2 at home later Saturday.
Skipper Ramos was again Real's hero, heading the winner in injury time as the 11-time European champion extended its unbeaten run to 35 games -- a new club record.