Pada keluasan 194,884 mi² (504,782 km²), Sepanyol ialah negara yang ke-51 terbesar di dunia. Saiznya serupa dengan Turkmenistan dan lebih besar berbanding negeri A.S. California.

Peta topografi Sepanyol

Spain bersempadan dengan Portugal di barat, Gibraltar (sebuah Wilayah Luar Negeri British) dan Maghribi di selatan, melalui kota-kotanya di Afrika Utara (Ceuta dan Melilla). Di timur laut sepanjang pergunungan Pyrene, Sepanyol bersempadan dengan Perancis dan kerajaan kecil Andorra. Wilayah Sepanyol juga termasuk Kepulauan Balearic di Laut Mediterranean, Kepulauan Canary di Lautan Atlantik dan sebilangan pulau yang tidak dihuni di sisi Mediterranean selat Gibraltar, dikenali sebagai [Plazas de soberanía] Error: {{Lang}}: teks mempunyai penanda italik (bantuan), seperti kepulauan Chafarina, Pulau Alborán, "batu-batan" ([peñones] Error: {{Lang}}: teks mempunyai penanda italik (bantuan)) Vélez dan Alhucemas, serta Pulau Perejil yang kecil. Di barat laut sepanjang banjaran Pyrene, sebuah pekan terpisah bernama Llívia di Catalonia dikelilingi wilayah Perancis.

Tanah besar Sepanyol didominasi oleh penara dan banjaran gunung yang tinggi, seperti Sierra Nevada. Dari gunung-gunung ini mengalirnya beberapa batang sungai utama seperti Tajo, Ebro, Duero, Guadiana dan Guadalquivir. Tanah lanar dijumpai sekitar kawasan pantai, antaranya yang terbesar ialah kawasan Guadalquivir di Andalusia.

Oleh sebab keadaan geografi dan orografi Sepanyol, iklimnya amat pelbagai; sehingga boleh dibahagi kepada tiga kawasan:

  • Iklim kebenuaan yang sederhana terjadi dalam kawasan pedalaman Semenanjung (bandar terbesar, Madrid).
  • Kawasan iklim Mediterranean yang terbentang lebih kurang dari dataran Andalusia sepanjang pantai selatan dan timur hingga ke Pyrenees, pada sebelah banjaran gunung sepanjang tepi kawasan pantai yang menghadap laut (bandar terbesar, Barcelona).
  • Iklim lautan terjadi di Galicia dan the jalur pantai di tepi Teluk Biscay (bandar terbesar, Bilbao). Kawasan ini sering bergelar Sepanyol Hijau.

Koordinat: 40°00′N 4°00′W / 40.000°N 4.000°W / 40.000; -4.000