这一迂回奔走,使反扑过来的瓦剌大队骑兵得以渐渐逼近。大军刚要从宣府开拔,已有信使来报,也先追军与殿后的部队接上了火,恭顺侯吴克忠和其弟吴克勤力战而死,后军已全都溃散。皇帝急命成国公朱勇、永顺伯薛绶领官军三万前往增援,朱勇有勇无谋,进军至地势险要的鹞儿岭时冒险轻进,中了埋伏,瓦剌骑兵于山两翼邀阻夹攻,轮番冲杀,把三万明军杀掠殆尽。
次日,大军撤至怀来县西南20里处的土木堡驻扎。稍有军事常识人的都知道,应该撤入怀来,据城坚守,但王振以大批辎重尚未跟上为由,不听劝阻强在此间扎营。土木堡地势较高,挖地两丈余都不见砂土里渗出一滴水来,连军马食用的草都找不到。而唯一的水源,距离此地十五里开外的一条河已被瓦剌骑兵占领。这么多人马挤在一处,饥渴交加,一天下来已人心涣散。此时再想移营别处已不可能,蒙古大军已将土木堡团团围住。瓦剌骑兵从堡旁的麻峪口分道进攻,都指挥郭懋拒战一整夜,敌人却越聚越多,到天亮时分,如同黑压压的蚂蚁一般把小小的土木堡围得水泄不通。
八月十五日早晨,也先遣使前来议和,皇帝命曹鼐草敕议和文书,派出两名通事与来使一同去也先大营。瓦剌兵佯作撤退,王振一见对方兵退,急令移营,回旋之间,队伍已不攻自乱。南行才三四里,瓦剌兵从四面发起攻击,又以铁骑蹂阵而入,奋长刀以砍大军,大呼解甲投刀者不杀。明军争先逃跑,如溃坝的潮水一般不可阻止。军士被踩踏而死者不计其数,蔽野塞川。箭如飞蝗一般射向中军大营,皇帝近旁的宦侍、护卫们全被射成了一只只刺猬。混乱中,王振被护卫将军樊忠杀死。
朱祁镇在亲兵的护卫下试图突围而不得出,最后被瓦剌兵俘虏。这一战以明军大败告终,折损数十万人,骡马二十余万并衣甲器械辎重,也尽为也先缴获。英国公张辅、泰宁侯陈瀛、驸马都尉井源、户部尚书王佐、兵部尚书邝埜、翰林院学士曹鼐、张益而下数百僚属全都死于乱兵,从臣得脱者仅寥寥数人 ()。①
《明史纪事本末》记载了朱祁镇被俘前后的一些细节:见突围无望,朱祁镇下马盘膝面南而坐,身边唯有一个叫喜宁的宦官陪侍。有一个瓦剌军士见他衣着华贵,于是强行索要,朱祁镇不给,军士正要行凶,另一人劝阻说,这人举措沉着,看来不像凡人,就把他送到了也先之弟赛刊王那里。朱祁镇的一番问话吓了他们一大跳:“你是何人?是也先?是伯颜帖木儿?是赛刊王?还是大同王?”赛刊王赶紧派人驰见也先,报告说部下抓获一人,行为言语甚异,莫非真是大明天子?也先召了两个明军俘虏问情形,这两人远远一见,就说,真的是皇帝啊。也先大喜:“我常常祷告上天,求大元一统天下,今天果然奏此大捷。”有人提议杀了明朝皇帝,也先以为两军交战刀兵无情,明朝皇帝却不中一刀一箭,岂非有上天护之,杀了他就是违了天意,令部下好生看护。也先等拥着朱祁镇到宣府,传谕守将开城门出迎,城上人说,我们所守的是陛下的城池,天色已晚不敢奉诏。瓦剌兵又到大同城下索要金帛财物,守城的郭登等人出城迎谒,伏地恸哭,献上金币两万。此时瓦剌大营扎在城西,郭登挑选死士趁着夜间策划了一次救援行动,没有成功,第二日一早,只好眼睁睁地看着瓦剌兵拥着朱祁镇北上了。