朱元璋吩咐徐达,改大都为北平府,留三万人成立六个“卫”,拱卫这个北平府,交给孙兴祖与华云龙二人指挥,徐达本人统率大军西征。
西征的最大对象,是王保保。其次,是李思齐。又其次,是张思道及其弟张良臣、孔兴、脱烈伯。
王保保这时候在太原,已于大都易手之前,被元顺帝赦免一切罪名,开复重要官爵(河南王,太傅,中书左丞相)。
徐达由今天的平汉铁路路线南下,进入山西,在洪武元年十月取了泽州(晋城)、潞州(长治)。王保保却也正在找徐达打,由太原北去,向着大都的目标走。徐达接到消息,决定不回师救大都,而贯彻原来的计划:打太原。
王保保在十二月间走到了保安州(涿鹿),听说太原丢了,慌忙选了几万骑兵回来,在太原城下扎营,当天夜间被明军偷袭,大败,溜去大同。其后,由大同移军(甘肃)定西,在洪武二年冬天围攻明军韩温部于兰州,围了几个月,徐达带了主力来到。洪武三年四月,两军在定西之北的沈儿峪对垒,一日数战。结果,王保保又吃了一个极大的败仗,被俘了八万四千五百多将校士兵,自己仅能与妻儿几个人逃走,在宁夏住了一些时,最后去到和林(库伦西南),保元顺帝的继承者、太子爱猷识理达腊的驾。
李思齐本在潼关,被明军冯宗异部吓走,退守凤翔。洪武二年三月,又从凤翔溜走,退守甘肃西南部的临洮。一个月以后,冯宗异追到临洮,李思齐投降,被送到应天(南京)。朱元璋赏他一个毋庸到任的官:江西行省左丞。
张思道本在鹿台,保卫奉元(西安)。明军一到,他溜去甘肃,扎在庆阳。其后,留下弟弟张良臣守庆阳,自己去宁夏投奔老仇人王保保,被王保保禁闭。张良臣在洪武二年五月降明,降了又叛,在八月间战败,被杀。
孔兴与脱列伯本来也是扎在鹿台的,其后于洪武二年八月攻明军某部于大同,李文忠来救,脱列伯战败被俘,押到应天,朱元璋赐他一套衣冠。孔兴溜走,被自己的部下杀了。于是在洪武三年四月沈儿峪之战以后,山西、陕西、甘肃、宁夏、绥远,都成了大明的领土。