Сучасне місто займає значну частину Софійської котловини і розтяглося переважно на південний схід і північний захід від історичного центру, сягаючи підніжжя гори Витоша, а північно східні райони міста Сеславці і Кремиковці розміщені на схилах гори Стара Паланина.