Barcelona sijaitsee Välimeren rannikolla 120 kilometriä Pyreneiden vuoristosta etelään. Kaupunki levittäytyy tasangolle, jota reunustaa Llobregatjoki etelässä, Besòsjoki pohjoisessa ja Litoralvuoristoon kuuluva Collserolan vuorijono lännessä…
Kaupungin halki virtaa Tonava, joka jakaa sen kahteen osaan: läntiseen Budaan ja itäiseen Pestiin. Budan puolella on korkeita kukkuloita, kun taas Pest on alavaa tasankoa.