David Ramos/Getty Images
Vilanova was sent to the stands as Barcelona put in an uneven performance.
They came away with the victory, but Barcelona made themselves work for it right up to the final whistle. Vilanova can definitely take some of the blame this time around.
Osasuna beat Barcelona last year, and must have thought they were destined to repeat the triumph when Joseba Llorente netted after 17 minutes.
La Blaugrana were second best throughout the game, looking frustrated and uninspired. Vilanova had rested Xavi and David Villa, with Tello and Alexis Sanchez starting instead.
In the 73rd minute, Vilanova vented his fury at the officials. He was promptly dismissed and forced to spend the rest of the game in the stands.
Barca only really came to life when Xavi replaced Fabregas with 20 minutes to go. Suddenly they played with purpose and created chances, but it was a controversial decision that would get them back into the game.
The referee was obstructing Osasuna captain Patxi Punal, but play continued. A cross into the box confused the Osasuna defence and Sanchez found Messi, who struck from six yards.
Punal was enraged, protesting for an offside call on Sanchez, as well as the fact that play was allowed to continue. He followed Vilanova as the second player to be sent from the field.
Osasuna weren't allowed to regain their shape and adjust to playing with 10 men before Barcelona struck again. Once again it was Messi who came to the rescue, connecting with a cross from Jordi Alba to side foot home.
Vilanova's decision to rest key players almost backfired on him here, as well as his inability to control his emotions at key points in the game.
Being sent to the stands in only his third game in charge capped a day to forget. However, Vilanova's team got the points, which is ultimately all that matters.