El municipio se encuentra en el litoral onubense, a orillas del océano Atlántico, y se extiende a lo largo del margen del
río Guadiana, que a su vez, marca la frontera con
Portugal. La altitud media del municipio sobre el nivel del
mar es de 3 m, si bien la altitud máxima es de 63 m, en la colina del
Parador, donde se ubicó el
castillo medieval de la ciudad. A su vez, está conectado con el Algarve portugués a través del
Puente Internacional del Guadiana.