The Movistar rider edged a bunch sprint at the end of the 182km stage, with Julien El Fares (Type 1) coming second and Samuel Dumoulin (Cofidis) third.
Australia's Luke Durbridge (GreenEdge) finished safely in the leading bunch to hang on to the lead in the general classification going into Friday's finale, a 167km stage from Le Mans to Sable-sur-Sarthe.
"I had been told by my directeur sportif Yvon Ledanois that it would come down to a sprint of 20 to 30 riders," said Ventoso. "That's why our team has worked so hard behind the breakaways."
Manuele Boares (SaxoBank) and Nelson Oliveira (Radioshack) are second and third respectively in the general classification, eight seconds behind Durbridge.
Durbridge paid tribute to his team-mates for keeping him in the leading bunch.
"Peter (Weening) did 120km on the front solo, then Daniel (Teklehaimanot) helped me around the circuit," Durbridge said.
"When the team does such a special job, you want to repay them. I felt a pretty sore knee leading to the circuit and I told Peter ‘I'm finished'. He made me hold on as long as I could.
"Every time on the climb, I thought ‘next lap I'm done' but it was just another five minutes of suffering to go. Ten of us got dropped in the last lap but we got back on with 3km to go. I've suffered like a dog but I'm still in the lead."