D'une superficie de 1 039 km2, Sofia est située à l'ouest de la Bulgarie, dans une plaine fertile, à 8 km des rives de l'Iskar, à 55 km de la frontière avec la Serbie. La plaine de Sofia est entourée de montagnes : au Nord, se trouvent les Balkans et au Sud le mont Vitocha qui atteint 2290 mètres au Tcherni Vreh (Pic noir).