The win in Portugal is makes it a successful weekend for the Welshman's Sky team, as Chris Froome took overall victory at the Ruta del Sol on the same day.
Thomas had initially put himself into the yellow leader's jersey after a solo win on stage three before extending his lead in the individual time trial on stage four. He then finished safely on the final stage to maintain his 27 second lead over his nearest rival Michal Kwiatkowski (Etixx - Quick-Step).
André Greipel took the stage victory when the race finally came together in the last kilometre, after Movistar riders Adriano Malori and Jonathan Castroviejo made an attack late in the day to join the five rider breakaway already out front.
Greipel then sprinted to the line to take his first victory of the season, but it was Thomas who took the overall spoils in the early season race, displaying fine form as he prepares to embark on a spring classics campaign.
Volta ao Algarve 2015, stage five: Almodôvar - Vilamoura, 184 km
1 Andre Greipel (Ger) Lotto Soudal, 4-15-40
2 Tom van Asbroeck (Bel) LottoNL-Jumbo, same time
3 Raymond Kreder (Ned) Team Roompot, st
4 Rudiger Selig (Ger) Katusha, st
5 Gianni Meersman (Bel) Etixx – Quick-Step, st
7 Roy Jans (Bel) Wanty-Groupe Gobert, st
8 Jurgen Roelandts (Bel) Lotto Soudal, st
9 Alexander Porsev (Rus) Katusha, st
10 Ben Swift (GB) Team Sky, st
Final overall classification
1 Geraint Thomas (GB) Team Sky, 19-46-13
2 Michal Kwiatkowski (Pol) Etixx – Quick-Step, at 27 seconds
3 Tiago Machado (Por) Katusha, at 1-11
4 Richie Porte (Aus) Team Sky, at 1-14
5 Luis Leon Sanchez (Esp) Astana, at 1-18
6 Rein Taaramae (Est) Astana, at 1-19
7 Sergei Chernetckii (Rus) Katusha, at 1-32
8 Alberto Losada (Esp) Katusha, at 1-55
9 Ruben Fernandez (Esp) Movistar, at 2-04
10 Ion Izagirre (Esp) Movistar, at 2-21
Thank you for reading 5 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1