Villa beat three defenders in the 17th minute before goalkeeper Noel Valladares got a touch to the Spain strikers rising shot but not enough to keep it out.
Villa scored his 40th international goal in the 51st when his shot from the edge of the area deflected off a defender to go over Valladares. But Villa missed a penalty kick in the 62nd at Ellis Park, sending it wide right.
Spain has three points and can still win Group H with a victory over Chile, which earlier beat Switzerland 1-0 to lead with six points. Switzerland has three points and Honduras has zero.
Villa single-handedly took the pressure off Spain, a favorite coming to South Africa, with a superb individual effort that helped ease the frustration of a 1-0 defeat to Switzerland.
He dribbled between Honduras players before cutting past Osman Chavez to send a right-footed shot into the far corner of the net as he slipped to the ground.
Villas fifth career goal tied him with four Spain players as the countrys leading scorer in World Cup play and moved him within four goals of Raul Gonzalezs record 44. But he shot No. 41 wide on a penalty kick in the 62nd after Navas was tripped inside the area.
Honduras barely remains alive in the tournament after also losing to Chile 1-0 last week.
Spain got back to its classy style and attacked from the start in front of 54,586 fans. It created a handful of chances inside the seventh minute, when Villas long-range shot beat the outstretched Valladares but went off the crossbar.
Ramos headed Joan Capdevilas cross over the net while free at the far post in the 11th.
Navas speed kept Honduras off-kilter, while Fernando Torres uncharacteristically missed three clear chances in the first half.
Torres, making his first start since right knee surgery in April, headed over the crossbar before sending a shot high in the 33rd. He then wasted Villas fine pass from inside the area at the close of the half.