於謙道:“如今瓦剌軍士氣高漲,如果我們禁閉城門,那麼低人就會認為我們怕了,他們會更加猖狂。所以我覺得,我們應該背城決戰,將二十二萬大軍列陣九門之外,並以重兵伏設於德勝門,形成一個城為營,以戰為守,分調援軍,內外夾擊的作戰部署,與瓦剌軍於北京城下一決死戰。”
石亨道:“此計甚妙。”
正說之間,隻見瓦剌軍漸漸逼近北京城,半個時辰後,瓦剌軍在距離城門不遠處安營紮寨,瓦剌首領也先將軍隊布置在西直門以西,於謙派兵迎擊瓦剌軍於彰義門,打敗也先部隊先鋒,奪回被俘者一千多人。
也先將主力列陣西直門外後,挾持英宗皇帝到德勝門外的土城,要求朝廷派於謙、石亨等高級將領親自出迎,並索求金帛數以萬萬計,企圖以此將明軍主將擒獲,迫使明朝獻城。於謙識破了敵人的陰謀,一方麵派出官員朝見英宗,一方麵提出“社稷為重,君為輕”的主張,統一官兵思想,嚴陣以待,粉碎了也先的誘騙陰謀。在兵力部署上,於謙審時度勢,靈活用兵;在戰役主要方向上,隱蔽主力,待機殲敵;在次要方向上,避敵主力,采取小股襲擾,處處出擊的策略,迷惑敵軍,給瓦剌軍造成錯覺。晚上於謙安排蕭覬飛三個對瓦剌軍進行夜襲,蕭覬飛三人率領部隊衝進瓦剌軍營地,砍殺瓦剌軍眾多,軍威大振,周翮翔本想帶二百個人頭回去,怎奈形勢迫切,隻得與蕭覬飛回城。
兩日後,北京城的上空烏雲密布,頃刻間迎來了一場暴雨,也先趁此天氣,率領軍隊進攻德勝門。於謙命蕭覬飛等人率少數騎兵佯裝戰敗以引誘敵人。也先中計,督精騎萬人追擊,陷入明軍的埋伏地。明軍神機營火器齊發,伏兵驟起,大敗瓦剌軍於城下,斬殺萬餘人。鐵頸元帥也先之弟孛羅、平章卯那孩等重臣也中炮身亡。也先收集潰兵轉而進攻西直門,又被明軍神機營與步、騎兵的聯合行動所擊敗。
也先發覺明軍主力在德勝門,便集中力量轉攻西直門。都督孫鏜率軍迎戰,打敗也先的先頭部隊。由於也先不斷增兵圍攻孫鏜,孫鏜力戰不支,退至城下,此時,把守城頭的給事中程信,嚴令不準開城。同時,命城上守軍發神炮,火箭轟擊瓦剌軍,明軍又從彰義門、德勝門抽兵增援,終於打退了瓦剌軍的進攻。
瓦剌軍又改為進攻彰義門。於謙命守軍將城外的街巷堵塞,在重要的地帶埋伏好神銃手、短槍手,又派兵在彰義門外迎戰。明軍前隊用火器轟擊敵軍,後隊由弓弩壓陣跟入,擊退了瓦剌軍的進攻。而此時,景帝所派監軍太監,率數百騎兵衝擊敵陣去搶功,使明軍陣勢陷入混亂。瓦剌軍乘勢反擊,追到德勝門外。在萬分危急關頭,當地居民紛紛登上房頂,以磚石迎戰瓦剌軍。於謙派出的援軍也及時趕到,打退了瓦剌軍的反撲。
也先在進攻北京的過程中,到處遭到軍民的抵抗和不斷襲擊。各地的百姓自動組織起來,抗擊瓦剌軍的掠奪。北方邊陲重鎮的守兵,也抱著與城共存亡的決心,誓死保衛國土。也先進攻北京各門屢次遭到失敗,中路軍在居庸關的進攻也受挫,並獲悉明朝各路援軍即將到達。唯恐後路被切斷,便率一部人馬,挾持英宗朱祁鎮由良鄉向紫荊關撤退。於謙發現也先軍隊正在撤退,即命令石亨等集中火炮轟擊也先軍營,炸死瓦剌軍一萬餘人。瓦剌軍在撤退的路上,一路燒殺搶掠,掠奪了許多物資和人口。而明軍分路追擊;石亨大破瓦剌軍於清風店,範廣在固安打敗瓦剌軍。也先一路狂逃,撤出紫荊關,不久退往關外。東路的脫脫不花軍,聞得中路、西路已敗,亦立即撤退,並於六日後單獨遣使進貢,來北京議和,英宗朱祁鎮也被釋放回國。
由於蕭覬飛三人在京城保衛戰中立了大功,於謙要向皇上啟奏封他們三人為將軍。