A late Cesc Fabregas goal was enough for Barcelona to take all three points at home to Levante in La Liga.
Barcelona started out with plenty of possession but struggled for chances in the opening 15 minutes.
That was until Andres Iniesta won a fortuitous penalty after Simao was harshly adjudged to have brought him down but Villa's effort from the spot was saved.
Iniesta struck an effort from outside the box on 30 minutes, but his side were surprisingly lacking in sharpness.
Near the end of the first half Villa set Dani Alves away down the right but Cristian Tello just could not make contact with his driven cross.
At the start of the second half Robert Acquafresca had the ball in the net but the flag was raised as he had strayed offside.
Levante had a half-chance in the 67th minute but Nabil El Zhar's fizzed cross was just too close to Victor Valdes.
Barca started to press and eventually they took the lead through Cesc Fabregas in the 85th minute as he fired low into the bottom corner for 1-0 and the three points.