Olhão (Portugisisk udtale: [oˈʎɐ̃w]) er en portugisisk by og kommune i distriktet Faro i provinsen Algarve i det sydlige Portugal. Kommunen havde i 2011 42.272 indbyggere og dækker et areal på 130,9 km². Den er beliggende mellem byerne Faro og Tavira, og ligger omkring 10 kilometer fra Faro, hovedstaden i distriktet. Olhão betjenes af Comboios de Portugal (Portugals statsbaner), og er beliggende på strækningen mellem Lagos og Vila Real de Santo António.