É sede de um município com 447,6 km² de área e 22 847 habitantes (2011),1 subdividido em 36 freguesias. O município é limitado a norte pelo município de Monção, a nordeste por Melgaço, a leste pela Galiza, a sul por Ponte da Barca, a sudoeste e a oeste por Ponte de Limae a oeste por Paredes de Coura.
O ponto mais alto do concelho situa-se na Pedrada, com a altitude de 1 416 metros, na Serra de Soajo.