不过,对明军而言,平局就意味着失败,因为明军号称“50万”,而瓦剌仅有3万人,双方在战场对峙下去,明军后勤的压力会比瓦剌大得多,况且,明军很难在对峙的状态下安全撤离战场返回中土,这是由于古代通讯设备落后等诸多原因,任何的阵前撤退都很难是有秩序的撤退,极有可能导致军心动摇,而最终演变成一场各人争先恐后逃跑的大溃败(历史上因阵前撤退而溃败的例子有著名的淝水之战)。因此,明军唯一的选择是:只有战胜敌人,才能平安撤离蒙古草原。
双方经过几个回合的较量之后,明军逐渐获得主动,开始兵分两路发起进攻了,左哨的宁阳侯陈懋,协同左掖的成山侯王通强攻敌阵的右边。瓦剌拼命抵挡,稳住了阵脚。这时候,左哨的都督朱崇(陈懋的副手)、指挥吕兴带领将士手持火器逼近敌阵,一轮接一轮地射击。瓦剌伤亡惨重,其阵脚已经被打乱了,但仍然顽抗到底。
右哨的丰城侯李彬协同右掖的都督谭青及其副手都督马聚,强攻瓦剌阵营的左边。双方将士混战在一起,战斗已经白热化。不久,马聚受伤,都指挥满都力战死。朱棣在远处望见战局一时陷入胶着状态,便亲自率领重骑兵再次发起进攻,加入战团,力图打破僵局。前锋将领刘江干脆下马手持短兵器步战,突入阵中,消灭了很多敌人。
在明军的全线攻击之下,瓦剌抵挡不住,终于崩溃了,将士们四散而走。朱棣不肯就此罢手,继续指挥部属追击。
当追击的明军越过两座山冈之后,再次与重新集结起来的一部分瓦剌将士发生遭遇战。瓦剌人抵挡不住,又溃散了。右哨的丰城侯李彬等人一直追到土剌河,在那里生擒了数十名敌人,另外,中军副将孙亨嗣也俘获了战马3000匹。不过,瓦剌首领马哈木、太平等人则成功逃跑了。当朱棣收兵回营时,已经是深夜了。
第二天,诸将要求继续对瓦剌展开追击。朱棣听从了皇太孙的意见,认为穷寇莫追。
其实,朱棣完全有能力对瓦剌军队展开大规模、长时间、远距离的追击。虽说忽兰忽失温之战结束之后,明军与瓦剌都有伤亡,但人多势众的明军承受伤亡的能力比瓦剌大得多。然而,朱棣却选择了撤退,原因是明军在忽兰忽失温地区作战时,后路始终在阿鲁台所部的潜在威胁之下。当时阿鲁台的根据地可能在呼伦贝尔一带,距离明军仅有几天的路程,他原来声称要与明军一起讨伐瓦剌,可是最后却失约了。