Freire sprinted to finish the 170-kilometer stage in 3 hours, 35 minutes and 24 seconds to win his second stage of the race ahead of Robbie McEwen of Australia, Erik Zabel of Germany and Tom Boonen of Belgium.
Freire was in 68th place overall, 6 minutes, 38 seconds behind Ukrainian Serhiy Honchar, who retained the yellow jersey of overall leader. American Floyd Landis trailed Honchar by 1 minute. The only change in the top 10 was Germany's Marcus Fothen, who fell from fifth to ninth and now trails Honchar by 2 minutes and 3 seconds.
Stage 10 Wednesday will take the riders on a 193-kilometer trek into the rainy Pyrenees mountains.