明与瓦剌之战有两次,即土木堡之战,发生在明正统十四年(1449年)八月;北京之战,发生在同年十月。明代经太祖朱元璋、建文帝朱允炆、成祖朱棣、仁宗朱高炽、宣宗朱瞻基5朝,至英宗朱祁镇嗣位,已历60余年。朱祁镇嗣位时方9岁,不能理事,朝政为宦官王振所操纵。王振恃其自幼服侍朱祁镇于东宫,颇得朱祁镇欢心,擅作威福,致使朝政紊乱,社会不安,叛乱四起。与此同时,蒙古瓦剌部却逐渐强盛起来,在兼并鞑靼部之后,又东破兀良哈,西破哈密,所控制的地区西起新疆,东至辽东,北迄贝加尔湖,南至长城,造成蒙古自元朝灭亡以来最强大的局面,正谋继续向甫扩张。至明正统十四年(1449年)二月,执掌瓦刺军政大权的也先以贡马为名,遣使2000人前来北京,却虚报为3000人,冒领明廷赏赐。明廷责其欺诈,按核实人数给赏,并减其所贡马价。也先于是以此为借口,立即发兵南下。
这年七月,也先自率主力入犯大同,请瓦剌可汗脱脱不花与兀良哈进攻辽东,命知院阿刺率骑兵一部进攻宣化、赤城(今河北省赤城县),另以骑兵一部进攻甘州(今甘肃省张掖县)。多年来对来自瓦刺的威胁一直掉以轻心的明廷,虽然采取了一些应急措施,从各地征调数万兵马赶赴大同、宣化,无奈为时已晚,宣化、大同危如累卵。七月十一日,也先进至猫儿庄(今山西省阳高县北),明参将吴浩迎战,兵败身死。王振在北京接到前方兵败的报告,不与诸臣商议,欲借天子亲征的威势吓退也先,于七月十五日请明英宗朱祁镇御驾亲征,留郕王朱祁钰守北京。七月十六日,朱祁镇率大军50余万仓促上路,十九日至居庸关,廿三日至宣化,廿八日至阴和,八月三日至大同。这时,也先已率瓦刺军撤出塞外,企图引诱明军继续北进,然后予以歼灭。王振果然下令继续北进,后知敌势的确强大,并正在待机决战,才为之恐惧,在到大同的当天当即宣布撤军。八月十四日,朱祁镇至土木堡(今河北省怀来县东南),距怀来城仅有20里远。诸将请朱祁镇入据怀来,王振因辎重未到,命令就在土木堡筑营。很快,瓦剌大军便追至土木堡,将明军包围。土木堡地势较高,掘地两丈无水,附近河道已为瓦剌军所制,明军人马饥渴难挨。八月十五日,也先在数次入袭均被击退之后,佯作后退,命全军移营就水。不料明军刚刚移动,也先已率劲骑从四面冲来,突入明军行阵,致使明军大乱,争相溃散。朱祁镇突围不成,被瓦剌军俘虏,王振和英国公张辅等随从大臣皆被杀死。也先见捉到朱祁镇,喜出望外,挟持朱祁镇至宣化,传谕守将杨洪、罗享开城出迎,杨洪、罗享拒绝出迎,也先又挟朱祁镇去大同劝降,并索求金帛。大同守将刘安等企图用金帛赎回朱祁镇,赴敌营去见也先,献上金帛2万,不料也先收取金帛后,并未释放朱祁镇。大同参将郭登谋将朱祁镇夺回,也先已挟朱祁镇北去。
土木堡兵败及朱祁镇被俘的消息传到北京,朝野大震。当时,京师的劲甲精骑皆已陷没,所余弱兵不满10万,情势至为危急。群臣商议战守之策,侍讲徐珵主张迁都南京,侍郎于谦坚决反对,认为应速召各地勤王之师,誓死守卫北京,尚书胡涝,大学士陈循等均赞同于谦的意见,于是守议乃定。明朝皇太后命郕王朱祁钰暂时摄政,以于谦为兵部尚书,负责筹划抗敌大计。
也先掳得明英宗朱祁镇后,原想挟之骗取明朝边城,勒索金帛,及闻明代宗朱祁钰嗣位,计划落空,又准备举兵南犯。与朱祁镇一同被俘的宦官喜宁,将明朝虚实全部告诉也先。也先遂决定以5万轻骑经宣化东叩居庸关,从正面实施牵制还击,自率主力经大同进攻紫荆关,迂回明朝北京。
十月初一,也先挟朱祁镇至大同,诡称送明英宗还京,通知守将开城迎接。明大同总兵郭登洞悉其奸,拒不开城。也先便由阳原(今河北省阳原县)进陷百羊口(今山西省天镇县西北),然后南下紫荆关,一举破关而入,明守将孙祥及韩青战死。也先由紫荆关向易州迂回,直趋北京。明代宗朱祁钰见瓦剌军已逼近京师,命于谦统领诸营兵马迎敌,又命宣化、辽东总兵及山东、河南、山西、陕西巡抚和募兵御史率军入援。京营总兵石享建议敛兵不战,坚壁清野,于谦认为不可示弱于敌,将全部兵力22万人分列九门之外,决心背城一战。
十月十一日,瓦刺军冲至德胜门外,与明军对阵。明叛监喜宁唆使也先邀请明朝大臣来见朱祁镇,企图不战而屈明之兵。朱祁任接到也先的书信后,未敢怠慢,立即命通政司参谋王复、中书舍人赵荣出城去见朱祁镇。也先嫌王复、赵荣二人官职低下,另邀于谦、石享等出见,朱祁钰未允。此时,明朝谋求与瓦剌议和,未达成一致意见,派人到城外征询于谦的态度。于谦回答:“今日只有军旅,其他非敢所闻。”朱祁钰于是打消了议和的念头。
十月十三日,也先派1万骑兵发动进攻,被明军以火器击败。瓦剌军转攻西直门,明军都督孙国和监军程信督军力战,因寡不敌众溃散,幸得石享及都督高礼、毛福寿等率军来援,才将瓦剌击却。北京城内居民,亦纷纷踊跃参战,争向瓦剌军投掷砖石,给士兵以很大鼓舞。也先原以为北京旦夕可破,不料与明军相持5个月。屡战受挫,恐相持日久退路给明军截断,于十月十五日夜经良乡撤退,沿途大掠所过州县。于谦知敌退去,分兵追击,至固安、霸县追还大批被掠人畜。与也先配合由宣化进攻居庸关的瓦刺军,亦因被阻于居庸关外,于十月七日即已退去。
也先见连续南侵不能得逞,瓦剌内部亦不稳定,决定送还明英宗朱祁镇,与明廷媾和。明代宗朱祁钰为保持帝位,本不欲迎驾南还,但迫于众臣压力,只好答应让朱祁镇回来。明景泰元年(1450年)八月十五日,朱祁镇返回北京,被朱祁钰禁锢于南宫。明景泰八年(1457年)正月,朱祁镇在石享等将领的支持下,重即帝位,将朱祁钰仍废为郕王,朱祁钰不久即死去。兵部尚书于谦等拥戴朱祁钰继嗣的大臣,亦相继被杀或流放。
明军大军麇集,辗转于宣府、大同间,致将士疲惫;扎营于群山之中,不便机动;且轻信议和,松懈戒备,导致大败,使明王朝一度危急。