Britain’s Chris Froome remained seventh after stage three of the Ruta del Sol, as Team Sky team-mate Wout Poels retained the leader’s jersey.
Four-time Tour de France champion Froome, 32, finished safely in the pack on the 165km third stage from Mancha Real to Herrera.
The final kilometres were left to the sprinters, with Italian Sacha Modolo beating Spain’s Carlos Barbero by a bike’s length to snatch victory.
Colombia’s Nelson Soto was third.
Dutchman Poels leads by two seconds from Astana’s Luis Leon Sanchez and Lotto Soudal’s Tim Wellens.
Former Sky rider Mikel Landa, now at Movistar, is five seconds back, alongside Astana’s Jakob Fuglsang.
With Saturday’s fourth stage likely to be another bunch finish, the five-day race will be settled in a 14.2km time trial around the coastal town of Barbate on Sunday.
Froome, who is 28 seconds back adrift of the leader, is competing for the first time since an adverse drugs test was made public.
He has to explain to cycling’s world governing body, the UCI, how he returned double the allowed level of legal asthma drug Salbutamol in his urine during his Vuelta a Espana victory in September.
Team Sky have said Froome’s next race will be at the Tirreno-Adriatico in Italy in March.
Stage three result
1. Sacha Modolo (Ita/EF Education First) 3hrs 48mins 18secs
2. Carlos Barbero (Spa/Movistar) Same time
3. Nelson Andres Soto (Col/Caja Rural-Seguros RGA) Same
4 Oscar Gatto (Ita/Astana) Same time
5. Moreno Hofland (Ned/Lotto-Soudal) Same time
6. Jon Aberasturi (Spa/Euskadi-Murias) Same time
7. Eduard Michael Grosu (Rou/ Nippo-Vini Fantini) Same time
8. Coen Vermeltfoort (Ned/Roompot-Nederlandse Loterij) Same time
9. Andrea Pasqualon (Ita/Wanty-Groupe Gobert) Same time
10. Colin Joyce (US/Rally Cycling) Same time
1. Wout Poels (Ned/Sky) at 12hrs 48mins
2. Luis Leon Sanchez (Spa/Astana) +3secs
3. Tim Wellens (Bel/Lotto-Soudal) +3secs
4. Mikel Landa (Spa/Movistar) +5secs
5. Jakob Fuglsang (Den/Astana) +5secs
6. Marc Soler (Spa/Movistar) +18secs
7. Chris Froome (GB/Sky) +28secs
8 Mikel Bizkarra (Spa/Euskadi-Murias) +35secs
9. Amaro Antunes (Por/CCC Sprandi Polkowice) +39secs
10. Jelle Vanendert (Bel/Lotto-Soudal) +39secs