Strong winds divided the peloton over the final part of the 207-kilometer (128-mile) ride from Baeza to Albacete, but the stage led to no change among the race favorites.

Bouhanni sprinted ahead of the pack and dipped his bike to the left at the last second to hold off Michael Matthews, who was about to overtake him at the finish line.

It was the FDJ.fr rider's second stage win in this edition after he also won a sprint finish on day two.

"It was a very nervy stage," Bouhanni said. "I had come here looking for one win and now I have two."

Valverde leads with Nairo Quintana 15 seconds behind. Alberto Contador trails by a further three seconds and Chris Froome is 20 seconds off the pace heading into Sunday's mountainous stage.

Quintana, the Giro d'Italia winner, was left behind by the other contenders when heavy headwinds provoked havoc among the pack. The Colombian was fortunate that his group was able to recover and close the gap by the end.

"It was a crazy day, but we expected that," Valverde said. "Albacete never fails. The wind hits you from one side or another. We stayed well positioned and attentive and were able to remain in the front group."

Former Vuelta champion Valverde said his contract negotiations continue with Movistar and added "we are close."

Sunday's ninth stage is a 185-kilometer (115-mile) ride starting in Carboneras de Guadazaon and finishing at the category-one Aramon Valdelinares summit.