1368年七月底明军逼近了元大都,领兵的徐达小心翼翼,大军在大都周围徘徊了四天后才攻城,但明军接近大都时却没有发生什么值得称道的战斗,以至于明朝、蒙古双方的史书都没怎么描写这场重要的战役。爱面子的蒙古人甚至在《黄金史纲》里打肿脸充胖子,说当年朱元璋不讲武德,他给元顺帝收税后(在蒙古史书中朱元璋给元顺帝当过官),“……以一万辆大车装了财货,以三千辆大车载了身穿铠甲的士兵来到(大都)。司阍者(即看门人)不允许进入,于是用大量财货宝物贿赂看守城门的人,才得进入(大都)。”那么徐达为何小心?元军为何不战而退?
徐达的小心其实是有依据的,元顺帝名义下的各路元军依旧有百万之众。在1368年前后,元军还是一个庞大的军头加盟集团。各地元军的分布是:山西的王保保,陕西的李思齐,两人一共拥兵数十万,王保宝仅仅是在随后太原之战和沈儿峪之战两战就送给了徐达战俘124500多人;陕甘的张良弼、脱列伯等各自拥兵数万人;辽阳行省的也先不花、纳哈出、刘益等人拥兵20多万(这是包括了部落所有民众后的数字,实际战兵数万人);梁王
巴匝刺瓦尔密和大理段家占据云南,也拥有十万级别的军队;在漠南还有元朝起家的五投下部落,也能出动数万骑兵。
元顺帝还带走了“十万蒙古”禁卫军,这些禁卫军的主力侍卫亲军主力其实是汉人和西域民族,他们撤退到蒙古草原后也成了后世蒙古人的重要组成部分(察哈尔部、阿速特部等部落都是元朝侍卫亲军后代组成的)。明军对北元(1368年8月2日后就是北元了)的实力给出了拥兵百万的评价,虽然这百万人含金量要打上好几折,元顺帝集团的骑兵优势却是毋庸置疑的,徐达生怕王保保和城内的蒙古骑兵里应外合,在进攻大都前就特意布置了步兵阵地,做好了对付元军骑兵的准备。
明军没有遭遇元朝大军,元顺帝是最大的功臣。元顺帝是一个聪明绝顶的昏君,元顺帝的文采很好,能写出流传整个元朝的诗词;动手能力极强,他的设计装修能力超过《梦想家改造家》的建筑师们N多倍,亲自动手的木匠活得到了明朝史书“精巧绝出,人谓前代所无”的评价;元顺帝还是一个政变高手,三次政变干掉了三个权臣。大聪明元顺帝在明军北伐时也制定了数十万人的攻略计划,但他总想在其中搞平衡,在明军北伐前的1367年十月份对察罕帖木儿留下的军事集团搞出了小动作。
王保保本来就很难压制养父察罕帖木儿留下的旧部(他亲爹赛因赤答忽1365年才去世),元顺帝又给了察罕帖木儿旧部颁发了合法对抗的“执照”。在元顺帝的旨意中,王保保只能指挥由直属的“帐前诸军”;河南诸军交给察罕
帖木儿的旧部李克彝统领,元顺帝给他增添了中书省平章政事等要职;山东的元军主力也是察罕帖木儿的旧部,却统一交给蒙古贵族出身的中书省右丞相也速统领;王保保的大本营山西则由中书省左丞相的沙蓝答里统领;河北的所有元军则交给背叛王保保的貊高统领,貊高本人得到了知枢密院事的顶配职权(枢密院的正式长官是元朝太子兼职)。元顺帝还封了李克彝、关保等人为国公,密令他们对王保保用兵。
在元顺帝的安排下,王保保和手下们打成了一锅粥,直到1368年闰七月,也就是徐达进入河北后,王保保才摆平了貊高和关保,重新将察罕帖木儿留下的大部分军队拿回到自己手中。而在当年的闰七月二十日,明军就已经打倒了天津附近。尽管后世有很多人认为王保保的私心造成了元大都丢失,但从战争实际来看,王保保要在不到一个月的时间内一边准备大战物资、一边急行军匆忙接受元大都防守任务,几乎是“不可能任务”。
王保保有私心,李思齐等军头的私心更大,元朝残余的百万大军中大部分要么被明军分割,要么按兵不动。元顺帝身边的侍卫亲军又都成了战五渣,他于是在7月28日晚撤出了大都城。元顺帝临走时安排家族83岁的长辈淮王帖木儿不花给自己“背锅”,每个城门也只留下了数百老弱残兵驻守。明军经过四天准备后,终于发现大都城真的唱了空城计,这才对大都城发起了进攻,没有经过像样的战斗就拿下了大都城。
在明军攻克大都前后,黄金家族的后裔中只有成吉思汗兄弟合撒儿的后裔图穆勒呼巴图尔主动出击扑向了明军,作为科尔沁的蒙古王爷,他的主力还留在漠南,因此他和儿子哈齐库鲁克一起带着六十名擎旗手冲击明军武装。这些蒙古好汉自然是全军“壮烈”了,明朝方面甚至都没有留下他们的名字,只有蒙古方面进行了记载。明军攻克了元大都,但明军和元军主力的较量才刚刚开始……