在1449年七月,蒙古族瓦剌部首领也先大举入侵中原,兵锋锐不可当。山西大同守军接连战败,许多边寨城堡失守,边报很急,朝廷派驸马都尉井源率兵四万增援。而专权骄横的大宦官王振却轻视敌人,又想建立奇功以巩固自己的地位,便劝英宗皇帝御驾亲征。他以为大兵一出,即可马到成功,待到凯旋时,邀皇帝路过他的家乡,自己也可衣锦还乡,炫耀权势,光宗耀祖。
七月十七日那天,英宗把留守北京的任务交给了他的弟弟朱祁钰,亲自统帅50万大军,浩浩荡荡地出发了。由于皇帝突然决定亲征,军队都是仓促调集起来的,既不了解敌情,缺乏完备的作战方略,又没有足够的后勤准备,怎么能不打败仗呢?加上大军自出居庸关后,从怀来到宣府(今河北省宣化县),连日风雨交加,道路泥泞,人困马乏,粮草又接济不上,因而士卒大批地生病饿死,尸横遍野。有些从征的大臣看到这种情况实在担心,不断上章乞留,不要冒进。王振哪里懂得军事,不仅不听,反而大怒,叫人把他们押到军中去游街示众。
也先得知明军北进,采取诱敌深入的战略,表面不动声色,静待战机。英宗毫无主见,拖着疲惫的军卒到了大同,不经整顿,便命令继续北进。也先探知了这些情况,认为时机已到,在两山之间的要冲设下埋伏,一举包围了先锋井源的部队。西宁侯朱瑛和武进伯朱冕率军前来增援,又中埋伏,厮杀了半日,结果全军覆没。前方战败的消息传来,英宗十分惊恐,王振也六神无主。在慌乱匆忙中,英宗决定退兵。
在撤退的时候,大同总兵官郭登建议皇帝从紫荆关绕道还京,王振不听,由原道而回。英宗刚回军到狼山,也先率骑兵就追来了,王振慌忙派成国公朱勇带三万骑兵抵御,自己和英宗仓皇逃跑。英宗跑得最快,当天傍晚到了距离怀来县二十里的土木堡。从臣们请他们进怀来县城以便防守,英宗因王振未到,执意要等待。王振到后,却不想再往前走了。兵部尚书等人建议分兵严防后路,提高警惕,同时请皇上星夜赶入居庸关,以确保安全。王振不仅不采纳这个正确的意见,反而讥讽兵部尚书是“腐儒”,根本不懂得什么“兵事”,并决定停止行军,在土木堡过夜。
也先在狼山的鹞儿岭利用有利的地形,从山的两侧袭击夹攻,消灭了朱勇的大部分兵力,并且连夜杀奔土木堡。第二天英宗和王振刚想启程,一见敌兵遍野,吓得没敢动弹。这个地方缺乏水源,根本没法防守,明军因为连续吃败仗,士气低落,又不敢和也先交锋,所以一连被困了三天,人马渴死的就有不少。面对内无粮水、外无援兵的困境,英宗实在没有办法,只得冒险突围。
也先十分狡诈,单等明军阵营一拉长,便两面夹攻。瓦剌士兵手执长刀,奋力砍杀,士气非常旺盛,大喊“解甲投戈者不杀!”呼声震天动地,一下子就把饥饿、干渴、疲惫不堪的数十万明军打垮了。随军的大小官员数百人也死于乱军之中。那个不可一世的王振,在兵败之际,被气愤的护卫将军樊忠用锤砸死了。
英宗皇帝呢?说来也真侥幸,在如此激烈的战斗中,护卫他的将士死的死,伤的伤,有的满身中箭,像刺猬一样,他却安然无恙,一点都没伤着。英宗见败局已定,便绝望地滚下马来,干脆盘腿坐在草丛之中,等待死神的到来。战斗结束后,瓦剌军队打扫战场,收集战利品时发现了他。英宗被带到一个叫雷家站(即当时的保安州,今河北省怀来县西北)的地方。也先为了证实这个俘虏的身份,叫了两个曾经见过英宗的瓦剌人去辨认,证明确实是英宗皇帝朱祁镇。
土木堡一战,英宗被俘,数十万军队被歼灭,数百名官员丧命,历史上把这次战役称做“土木堡之变”。此后,也先一面用英宗作人质,要挟勒索明廷;一面带兵南下,包围北京,四处抢掠财物。兵部尚书于谦指挥军民誓死保卫北京,大败蒙古军队,并夺回了部分被掠的百姓和牲畜。也先恢复元朝的梦想落空了,逃出塞外。也先派正式使节向明廷求和,明朝正式派礼部右侍郎李实带着礼物,去也先营中把英宗接了回来。