明军攻克
山西以后,北方广大地区已尽为明朝所控制。惟陕甘方面尚为元军10余万人所盘踞:
李思齐驻
凤翔,
张思道驻鹿台(今陕西高陵西南)以拱卫
奉元(今陕西西安),
扩廓帖木儿则驻扎于塞外。
二月二十六日,征虏大将军
徐达以副将军
常遇春和冯胜为先遣部队渡
黄河攻取
陕西。三月初一日,徐达率大军自
蒲州(今山西永济西南)渡河,进据蒲城,逼降元鄜城(今陕西洛川境内)守将施成,张思道闻讯逃往
庆阳(今属甘肃),明军不战而占有鹿台、奉元。
十二日,常遇春率部进逼凤翔,李思齐逃往
临洮(今属甘肃),凤翔又不战而克。时参政
傅友德亦已攻克凤州(今陕西凤县)。四月二日,徐达集诸将于凤翔,讨论进攻方向。徐达根据李思齐和张思道的不同兵力、临洮和
庆阳的地理形势,本着先易后难的原则,决定先攻临洮而后进取庆阳。其后明军西向,连克
陇州(今陕西陇县)、
秦州(今甘肃天水西)、
伏羌(今甘肃甘谷)等地。
十一日,师至
巩昌(今甘肃陇西),兵分两路,一路由冯宗异率领,进取临洮;一路由都督同知顾时率领,进取
兰州。十三日,两路皆捷,临洮、
兰州悉入明军之手,李思齐被迫投降。然后徐达挥师东向进攻庆阳,沿途相继攻克
安定州(今甘肃定西)、会州(今甘肃会宁)、靖宁州(今甘肃靖宁)、
隆德、
平凉、泾州(今甘肃泾川)等地,进逼庆阳。十五日,庆阳守将张良臣降而复叛,徐达于二十一日对庆阳实施四面围攻,展开长达三个月之久的攻城战。
为解庆阳之围,扩廓帖木儿于七月底八月初兵分三路反击明军:一路攻
大同,欲夺回
太原;一路攻凤翔;一路攻原州(今甘肃镇原)、泾州,给明军造成了很大的威胁,整个战局为之一变。明军被迫暂取守势,一面分军扼守各处要点,一面调集兵力增援庆阳。至八月二十一日,庆阳城中粮饷断绝,外援无望,其部将开城迎降,张良臣投井自尽。攻克庆阳后,各路元军亦被击退,陕甘地区的故元势力基本上被消灭。十二月底,明军又相继击溃扩廓帖木儿派往大同、凤翔和兰州方面的军队,彻底平定陕甘。