Villa spared Spain after an unconvincing performance with his fifth goal of the tournament eight minutes from time to take his country through to their first-ever semi-final of this competition.
Paraguay, who will go home having only conceded two goals in South Africa, defended stubbornly and will be cursing a missed opportunity after Oscar Cardozo's penalty was saved by Iker Casillas in the 57th minute, in an incredible passage of play.
A minute later Villa was fouled by Antolin Alcaraz, with Xabi Alonso being ordered to retake the penalty a second time after encroachment, which was then saved by Justo Villar.
Spain improved significantly after what could have been such a crushing setback and Villa's predatory instincts once again proved the difference.
All the talk before the game had centred around whether Vicente del Bosque would keep faith with struggling Liverpool striker Fernando Torres, but it was Paraguay's Gerardo Martino who was the real tinkerer, making a stunning six changes to the team that limped past Japan on penalties.
Spain's reputation as World Cup chokers is well earned and they appeared affected by the pressure in the first half.
Xavi nearly broke the deadlock in stunning style on the half hour with a wonderful volley from just outside the box that whistled just over the crossbar.
But Paraguay's Nelson Valdez almost stunned the Spanish five minutes before the break when he had the ball in the net - only for strike partner Cardozo to be flagged offside.
Torres once again looked way off the pace and only lasted 11 minutes of the second half before he was replaced by Cesc Fabregas - to ignite a quite remarkable five minutes.
In the 57th minute Gerard Pique hauled down Cardozo in the box and referee Carlos Batres, whose appointment was opposed by Paraguay, showed no hesitation in awarding a penalty.
But Casillas comfortably saved Cardozo's effort and barely 60 seconds later Spain earned a penalty of their own when Alcaraz needlessly fouled Villa in the box.
Alonso converted with ease - only to be told to take it again after encroachment and then saw his second effort saved by Villar.
The chaos didn't end there as Fabregas was clearly fouled by Villar as he attempted to hook in the rebound but Batres didn't want to give a third penalty in four minutes.
It only served to inspire Spain, however, and they finally discovered their fluent football. And their pressure had to count eventually, though they left it late.
An excellent run from Andres Iniesta saw the midfielder find substitute Pedro Sanchez and though he struck the post, Villa was on hand to squeeze home with the aid of the woodwork and send his country through to meet Germany in Durban on Wednesday.
Paraguay (4-4-2): Villar; Veron, Alcaraz, Da Silva, Morel; Edgar Barreto (Vera 64), Riveros, Santana, V Caceres (Barrios 84); Cardozo, Valdez (Santa Cruz 72).
Subs (not used): Diego Barreto, Bobadilla, Caniza, J Caceres, Torres, Bonet, Ortigoza, Benitez, Gamarra.
Spain (4-3-1-2): Casillas; Ramos, Pique, Puyol, Capdevilla; Busquets, Xavi, Alonso (Pedro 75); Iniesta; Torres (Fabregas 56), Villa.
Subs (not used): Valdes, Reina, Albiol, Marchena, Arbeloa, Javi Martinez, Silva, Jesus Navas, Mata, Llorente.