Earlier, Ronaldo hit a second-half hat-trick in Madrid's 4-0 home win over Getafe.
The pair will go head to head on Wednesday in the first leg of their Copa Del Rey semi-final at the Bernabeu.
Messi scored twice in each half, his second a penalty, as runaway Primera Division leaders Barcelona swept aside their 10-man opponents.
Pedro was also on target for the Catalans, while Raoul Loe briefly levelled for Osasuna before Alejandro Arribas' sending-off after 27 minutes made their task almost impossible.
Ronaldo's treble added to Sergio Ramos' opener for Madrid.
Barca's closest rivals Atletico Madrid slumped to a 3-0 defeat at Athletic Bilbao to leave the Catalans 11 points clear at the top of the table.
Athletic went in front within five minutes of the restart as Mikel San Jose nodded home from Markel Susaeta's corner.
Susaeta then finished the game as a contest with a neat finish from Ander Herrera's through-ball 13 minutes from time. Oscar de Marcos rounded off a fine night for the hosts when he stroked home Aritz Aduriz's cross.
In Italy, Edinson Cavani struck a late winner at Parma as Napoli took full advantage of a slip from Juventus to close back to within three points of the Serie A pacesetters.
It appeared Napoli would have to settle for a draw at the Stadio Ennio Tardini after Paolo Cannavaro's own goal cancelled out Marek Hamsik's opener.
However, Cavani had other ideas and the in-form Uruguayan raced clear five minutes from the end to decide a 2-1 victory and inflict a first home league defeat in 10 months on Parma.
With Juve's management going into meltdown after last night's 1-1 draw with Genoa, and Lazio losing ground due to a 1-0 home defeat to Chievo, Napoli can launch an assault on top spot.
In the late game, Inter Milan were lucky to salvage a 2-2 draw at the San Siro after being run ragged by a Torino side inspired by Riccardo Meggiorini.