The World Player of the Year has been struggling with a hamstring injury, but he was passed fit to feature in Barca's 2-2 draw against Athletic Bilbao on Saturday.
However, Messi watched from the bench as Bayern cruised into the Champions League final with a 7-0 aggregate victory, and Vilanova admitted the Argentine was left out because he feared he would aggravate the injury.
"Leo played in Bilbao on Saturday because he felt better," said Vilanova. "He imprinted a change on the team but at the end of the game he felt some strange sensations.
"He trained this week, but he didn't feel right. He is an explosive player and there was a risk he could tear his hamstring, so he couldn't help the team in these conditions."
Vilanova also denied suggestions that his team were becoming too reliant on Messi, insisting Barca had performed well without their record-breaking talisman.
"All these years when we have played without Leo we have won games by small margins, but this year in the league we have won games 5-0 and 3-0 without him on the pitch," he added.
"When you have a player that is so good, it is normal that you notice it. If Bayern had been without Franck Ribery or Arjen Robben they would not be at this level."
Vilanova also dismissed speculation of widespread changes to the Barcelona squad at the end of the season, and blamed the crushing defeat on a lengthy injury list.
"All squads are reinforced every season. I said the other day that we didn't need to change much, but rather recuperate the players we do have," he said.
"Bayern have arrived at this point with all their players and we have many out. Despite the great squad that we have you cannot win all the titles either. You can't win everything and the first leg has weighed heavily on this game."