|Andres Iniesta takes a shot at goal as Barcelona maintain their title charge [GALLO/GETTY]
Lionel Messi led the way for Barcelona on Saturday, becoming the first player to score 50 goals in a season in Spain's Primera Division on Saturday.
The Catalans bounced back from the midweek disappointment of losing to rivals Real Madrid in the final of the Copa del Rey with a 2-0 win over Osasuna.
Elsewhere a weakened Real Madrid team routed Valencia 6-3 away. Coach Jose Mourinho had one eye on next week's Champions League semifinal first leg against Barcelona when he left Cristiano Ronaldo, Xabi Alonso and Pepe on the bench but it hardly made any difference in Valencia.
Barcelona failed to show their usual style but did enough to stretch their unbeaten league run to 31 games.
Spain striker Villa scored his 18th of the season and first in 12 games in the 24th minute after stabbing home Jeffren Suarez's perfectly curled cross at the far post at Camp Nou.
Messi, who replaced Villa in the 58th, rolled home his league-leading 31st goal with three minutes to play to set the Spanish record.
Andres Iniesta and Xavier Hernandez also entered in the second half after defender Gabriel Milito looked to have injured his leg. Until Messi sealed the victory, the three made little impact.
Barcelona maintained their eight-point advantage over Real with just five games to play.
Like Real, Barcelona opted for a team made up mostly of regular substitutes after Wednesday's gruelling final. The Spanish rivals are playing four times in 18 days and meet again on Wednesday.
Pep Guardiola's side moved a step closer to their third consecutive Primera Division title and have 88 points with five games left to play, while Real climb to 80 and Valencia stay on 63.
"The victory was very important," Villa told Spanish television after ending a 12-match goal drought.
"It was very difficult, especially the mental and physical tiredness from the other day, but it's three points more, one game less and the eight-point lead is maintained."