洪武元年十一月二十七日,徐達等率師經平定州,克壽陽縣,抵達太原附近。隨後,他暗中派人持信前往潞州,督促右副將軍馮宗異率部嚴師以進,配合北平之師夾擊太原。
王保保行至保安州,聽說徐達親統大軍進逼太原,唯恐巢穴失守後,自己進退無依,所以立即回師迎戰,來勢十分凶猛。見敵人來勢洶洶,副將軍常遇春向徐達獻計說:“我們騎兵雖多,但步兵還沒趕到,還不能和他們開戰。不如派精兵夜襲他們的營地,那時王保保的將士必然混亂,就可使其主將束手就擒。”徐達覺得他的建議很好,表示讚同。恰在其時,王保保手下部將派人前來約降,並請充當內應。於是,徐達當機立斷,不待右副將軍馮宗異兵至,在十一月二十九日夜襲了王保保營地。當時,王保保正借著燭光在營帳中看書,突然發覺部眾一片混亂,心知大事不妙,倉促之間不知所措,慌忙中連靴子都來不及穿好,竟然光著一隻腳,從營帳後麵溜了出去,騎上一匹沒有鞍轡的戰馬,僅帶著十八名隨從狼狽出逃。次日黎明,太原內應王保保部將率太原城將校出降,太原告克。此役,共俘虜元軍將士四萬餘人、馬四萬餘匹。
由於攻占太原比預期的順利很多,所以在太原告克至馮宗異奉命率部至太原與徐達大軍會師前的這段時間裏,大將軍徐達與右副將軍馮宗異分別出兵攻占了晉中、晉南眾多州縣。洪武二年正月初五,右副將軍馮宗異、偏將軍湯和等率部抵達太原,與徐達所率北平之師正式會師。隨後,徐達對各部兵力進行綜合調配,統一部署。十九日,副將軍常遇春奉徐達命自太原率兵攻取晉北軍事重鎮大同。二十一日,參政傅友德又奉命率兵屯守晉北另一軍事重鎮朔州。
(三)平慶陽之亂,蕩關隴殘敵
山西全境告克後,徐達又馬不停蹄地揮師西渡黃河,掃蕩盤踞在關西的元朝殘部和當地地主武裝。洪武二年二月二十九日,大將軍徐達統率大軍自平陽(今山西臨汾市)進駐河中府(今山西永濟市西南),命隨從副將軍常遇春、右副將軍馮宗異率先西渡黃河,進軍陝西。三月初一,徐達親率大軍自河中渡過黃河。三月初六,大軍渡過渭水,進至鹹寧(今陝西西安市)近郊,元陝西守將出逃。次日,徐達整兵入城,所率將士秋毫無犯,受到了三秦大地人民的熱烈歡迎。當天,徐達下令改奉元為西安。接著,徐達派兵攻占鳳翔,通過隴州(今陝西隴縣)直抵秦州(今甘肅天水市)。四月初十,徐達率兵奪取寧遠(今甘肅武山縣),次日,進軍至鞏昌(今甘肅隴西縣),元守將相繼來降,徐達均以禮待之,當日,派遣右副將軍馮宗異率部西征臨洮,都督副使顧時、參政副使戴德率部進攻蘭州。十三日,馮宗異兵至臨洮,元大將李思齊不戰而降。同日,都督副使顧時等也攻克蘭州。
徐達在降伏了李思齊並占領了西北軍事重鎮蘭州後,決定揮師東進,消滅長期盤踞在西北地區的另一支實力較強的元朝殘餘勢力,那就是慶陽張思道兄弟。進攻慶陽途中,徐達率部過關斬將,攻城略地,勢如破竹。而駐守慶陽的張思道在獲悉明朝征西大軍平定臨洮的消息後,內心已經恐慌。待到徐達所遣使者來到慶陽,王保保在西安州大敗的消息傳開後,張思道更加懼怕。他不敢與徐達臨陣對敵,但又不甘心俯首就擒,於是此後不久,便留其弟弟張良臣與平章姚暉率兵駐守慶陽,自己帶著一些輕騎逃往寧夏,結果在寧夏被王保保監禁。張良臣為人狡詐,而且驍勇善戰。但是他在奉命留守慶陽後不久,就陷入了徐達西征大軍的包圍之中,處境十分被動。當王保保關押哥哥張思道的消息傳來,又使得張良臣對北元朝廷極為不滿,而且倍感孤立。就在這時,徐達派去招降的人來見張良臣。張良臣乘此機會於五月初八向徐達投降。