洪光乘此时离西洱河仅四十里,南诏军只用一个时辰便急赶到了西洱河,其间一路追赶他们的唐军就象蒸发了一样,踪影皆无。南诏前军刚赶到西洱河,离河边已不到一千步时,突然密林两边有无数箭矢射来,南诏前军措不及防,中箭者极多,洪光乘虽然知道中计,但并不慌张,他命令中军和后军先稳住阵脚,随即向箭势稍弱的左面猛攻过去。等南诏中军跑到唐军刚才放箭之处时,发现放箭的唐军竟消失了,周围到处都是黑色的粘稠液体,发出刺鼻的味道,洪光乘是见过火油的,他突然意识到不妙,大声命令各军后退,但唐军的火箭已经射来,点燃了满地的火油,三万多南诏中军竟被大火团团包围住,更可怕的却是不知从何处抛来数百只铁皮火药桶,在密集的南诏军中爆炸开来,每一只火药桶的爆炸便飞溅出数百枚细小的铁丸,杀伤力极大,这时南诏军的后军又一阵大乱,从南诏军的背后杀来一军,为首大将正是突然失踪的唐将蔡明德。这时,辛云京从北、李月从西、段秀实从东将南诏团团围住。南诏众军只听见北面、东面和西面都传来喊杀声,不知有多少唐军朝自己杀来,个个人心惶惶,一片混乱,洪光乘也被一粒铁丸击中左眼,脸上全是鲜血,他听自己前军的声音已经稀落,估计已经被唐军消灭得差不多,而后军则被唐军铁骑穿插绞杀,明显已处下风,自己所在的中军在唐军火器的袭击和火攻之下,也已经死伤累累,但却见不到敌军的踪影,他见己军败相已现,便命全军撤退,自己一催战马,向火势稍弱的一角逃去,南诏众军见主帅逃走,便纷纷跟随着逃跑,唐军趁势在后面掩杀。逃出五里后,洪光乘纠集败军突然反攻唐军,想杀唐军一个回马枪,怎奈这支唐军和前面的几支唐军完全不同,战斗力极强,个个奋不顾身,再加上唐军铁骑的冲击,杀得南诏军士气全无,南诏军就是这样,战斗力很受情绪影响,若士气高昂,个个如猛虎一般,但若士气一失,就毫无抵抗力,南诏众军见自己和唐军的鏖战完全是一边倒的屠杀,便不等主帅命令,四散奔逃。洪光乘无奈,最后只得带了五千残军逃回太和城。李月不再追赶,挥师邓川,一举击溃南诏围困邓川的二万守军,成功救出被围困已达一个多月,几近绝望的五万唐军。南诏三战皆败,损兵近十万,阁罗凤大恐,遣使到长安求和。唐军全歼吐蕃军,夺回了姚州,打南诏又三战大捷,歼敌近十万,救出了被困的五万唐军,而全军伤亡不到三千,消息传到长安,举国欢腾,长安的鞭炮声响