西昌位于四川省西南部安宁河谷地区,全境海拔在1500米以上,地形以中山为主,占全市总面积的78.9%,高山,低山分别占1.1%和3.4%;河谷平坝面积占16.4%,是四川省第二大河谷平原。
山地分布在安宁河东西两侧:西部牦牛山,是市境内山地的主体,占全市总面积的一半,自北向南纵贯全境,构成安宁河与雅砻江的分水岭。其北段许多山峰海拔超过3500米,向南逐渐降低。整个山体,大部分界于2000—3000米之间;安宁河东侧属螺髻山山脉,其北段主脊线在喜德县境,南段主脊线在西昌与普格的分界线上。