Spain have not been as impressive as many were expecting on their way to the last eight in South Africa and it was a similar story in Johannesburg this evening.
Vicente del Bosque's side dominated possession for long spells but Villa and Fernando Torres were shorn of service in attack and it was Paraguay that went closest to scoring in the first half when Nelson Valdez's goal was ruled out for an offside on Oscar Cardozo.
Spain survived an even bigger scare in the 58th minute when Cardozo's penalty was saved by Iker Casillas after he was tugged down by Gerard Pique in the area.
Spain won a penalty themselves two minutes later when Villa went down under a challenge Antolin Alcaraz but there was to be further drama as Xabi Alonso scored and then got ordered to re-take after the referee spotted encroaching. The Real Madrid midfielder saw his second attempt saved by Justo Villar.
The Spanish were not to be denied, though, and they secured their place in their first ever World Cup semi-final in the 83rd minute.
Andreas Iniesta drove to the edge of the box and set up Pedro whose shot struck the base of the post and rebounded kindly to Villa, who scored fortutiously via both posts.
Roque Santa Cruz went close to scoring an equaliser with a minute to go but Spain, despite a less than impressive performance, were not to be denied.
Del Bosque had kept faith with the same starting line-up for the third game in a row but familiarity bred contempt for the first hour and Paraguay could have gone ahead in the very first minute had Jonathan Santana shot more firmly at Casillas.
Cristian Riveros headed over as Paraguay continued their refusal to be overawed while Spain failed to bring a single save out of Villar in the first 45 minutes - Xavi's spin and volley that dipped just too late their one highlight.
Del Bosque had seen enough by the 55th minute when he sent on Cesc Fabregas for the ineffective Torres - and suddenly a drab game exploded into life.
First Casillas saved Cordoza's penalty and then almost immediately referee Carlos Batres awarded a spot-kick at the other end after Villa was felled.
Alonso scored, then missed after being ordered to re-take but Spain could even have got another penalty as Villar appeared to clip the heels of Fabregas when attempting to grab the loose ball.
Iniesta, who had been much subdued, suddenly woke up and brought a terrific save out of Villar with a curling effort before lofting another effort high over the bar.
Then, with seven minutes left, Spain finally produced a goal worthy of their lofty reputation when Iniesta went on a fantastic run and set up Pedro whose shot hit the post, with Villa reacting instinctively to fire it in off both posts. Now he has 43 goals for his country, only one behind Raul.
It was left to Casillas to rival Villa as Spain's hero with a double save in the dying seconds to keep out Lucas Barrios and Roque Santa Cruz.
Any reproduction, publication or redistribution of this material without the written agreement of 365 Media Group is strictly forbidden.