After losing their opening game 1-0 to Switerzerland, the easy victory puts Spain on course to reach the last 16, provided Vicente Del Bosque's side can beat Chile on Friday.
Honduras rarely threatened the Euro 2008 winners and after their second defeat are out of contention in the tournament, while Spain will need to produce a more convincing display if they are to progress far in the tournament.
The Central American minnows looked pedestrian while Spain attacked in waves as Villa's brilliance shone for his goals on 17 and 51 minutes, but he wasted the chance to complete his hat-trick when he missed a second-half penalty.
The 28-year-old gave a glimpse of what was to come when he rattled the crossbar on seven minutes from 30 metres out.
Honduras midfielder Danilo Turcios earned the first yellow card on eight minutes for trying to interfere with a quickly taken free-kick.
Villa finally opened the scoring in the 17th minute when he cut in from the left wing, beat the defence and then squeezed his shot into the top left-hand corner of the goal.
Fernando Torres, one of two changes to the side which lost to the Swiss, wasted Sergio Ramos's cross from the wing when he headed over with half an hour gone in what was a quiet performance from the striker still edging back to form.
Emilio Izaguirre picked up the second booking for Honduras when he fouled Spanish winger Jesus Navas on 38 minutes, but Villa was later lucky not to get booked when he appeared to slap Izaguirre in the face in the penalty area.
Spain kept up the pressure after the break as the first-half finished 1-0 and Villa scored his second soon after from a Navas pass. His shot from outside the box gave Honduras custodian Noel Valladares no chance in the 52nd minute.
Villa should have completed his hat-trick on 62 minutes when Izaguirre brought down Jesus Navas on the edge of the area and referee Yuichi Nishmura awarded the penalty, but the Spaniard fired the spot-kick wide of the right post.
On a rare Honduran attack, David Suazo fired wide on 66 minutes, but the biggest cheer of the night from the 54,386-strong crowd came soon after for the introduction of Arsenal midfielder Cesc Fabregas.
Torres made way for Valencia's Juan Manuel Mata as the Spanish went off the boil in the final 20 minutes.
Spain must now beat Chile - who defeated Switzerland 1-0 earlier Monday - on Friday in Pretoria to be sure of making the knockout phase, while Honduras will play for pride against the Swiss in Bloemfontein.