大同市位于山西省最北端,北以外長城為界,與內蒙古自治區烏蘭察布市的興和縣、豐鎮市、涼城縣毗鄰,西、南與本省朔州市的右玉縣、懷仁縣、應縣及忻州市的繁峙縣相連,東與河北省張家口市的萬全縣、陽原縣、蔚縣及保定市的淶源縣相接,距首都北京380公里,離省會太原352公里,全境總面積14176平方千米;為首都之屏障、全晉北方之門戶,且扼晉、冀、內蒙之咽喉要道,是歷代兵家必爭之地。
大同地理環境處于南下陰山、東來燕山、北上呂梁山、太行山北方四大山脈的交叉通道,是大雁為首的中部鳥類南遷通道。西北部山脈屬陰山山脈和呂梁山脈,主要有白登山、雙山、二朗山、云門山、采涼山等;東南部山脈屬太行山脈,主要有恒山、太白山、六棱山等。全市一般海拔在1000~1500米之間,最高處為陽高縣境內六棱山黃羊尖(海拔2420米),最低處為靈丘縣境內花塔村冉河出口處(海拔558米)。桑干河自西南向東北橫貫全市,形成了周圍高、中間低、兩山夾一川的槽型盆地。除桑干河外,境內主要河流還有屬海河水系的御河、南洋河、壺流河、唐河和屬黃河水系的蒼頭河。