1449年七月一日,大同参将吴浩与也先的部队在猫儿庄(大同北二十里)交战,全军覆没,消息传至京城,王振不以为意,十五日,英宗下诏御驾亲征,命同父异母的弟弟成王朱祁钰留守京城。
1449年七月十六日,朱祁镇率大军从京城仓促出发,号称五十万,王振与文武大臣几乎倾巢出动,通过居庸关,七月23日到达宣府(今张家口宣化区),八月初一到达大同。王振这时才得到消息,在七月十六日的战役中,总督大同兵马西宁侯宋瑛和总兵朱冕双双战死,全军覆没。
当晚电闪雷鸣,风雨大作,军士因亲眼目睹前线战场上遍野枕藉的同伴尸体而致营中彻夜惊乱,王振这才感到害怕,由于出征仓促,军队只准备了一个月的口粮,以这样部队北上,跟强烈的瓦剌骑兵作战,过于冒险,英宗终于意识到亲征不是阅兵,这让他寝食不安。
于是王振决定退兵,数十万大军出来转一大圈后,便掉头回京师,内阁学士曹鼐建议取道紫荆关退回京师,这样可确保安全,但此地离王振老家蔚县不远,于是王振请求英宗仍向居庸关方向回京,顺道可以巡幸他的老家蔚州富贵不还乡,如锦衣夜行。
王振从小离家,需要这样一次衣锦还乡的机会,然而当军队即将到达蔚州时,王振忽然想到几十万军队经过家乡,难免要践踏正在成熟的庄稼,便又让军队改变方向取道宣府返京,行军路线的突然改变引起军中极大恐慌。
1449年八月四日,大军返京取道宣府,行至土木堡,此时天色尚早,但王振传令部队选择高地扎营,等待后面尚未到达的千辆辎重车,兵部尚书邝埜力请以重兵断后,让皇帝先行入关以防不测,却遭到王振拒绝。按兵法,四周高地,中间(土木村)平地,乃兵家大忌。
农历八月十五,中国传统中秋节,瓦剌军追踪而至,铁壁合围,切断明军上游15里处溪流,25万人断水,恐慌至极,掘井二丈又不见水,更是乱作一团,瓦剌军越来越多,明军防线危如累卵,形式危急万分,也先突然派人来议和,并作出撤军姿态,英宗大喜,王振趁机下令移营就水。
蒙军多骑兵,不善攻营,若明军死守,或有一线生机。也先终于等来机会,明军移营三四里时,瓦剌军蜂蛹而至,包围明军,明军阵脚大乱,尸横遍野,英宗却出奇的冷静,被押送至也先营帐,也先得知大明皇帝被俘虏,欣喜若狂,复兴蒙元的烈火又在他心里熊熊燃烧起来。
大军溃败,皇帝深陷危境,英宗护卫将军樊忠万分愤怒,抡起铁锤对准王振脑袋狠狠砸了下去,一月前还做梦光宗耀祖的王振转眼间呜呼哀哉一