乾元元年(758)十月,郭子仪与广平王李俶率军收复了东、西两都,并与李光弼等九节度使率军六十万将安庆绪围困于邺城(今河南安阳),史思明率十三万大军从范阳南下,以救安庆绪。第二年三月,双方大战于安阳河之北。由于唐军缺乏统一指挥,步调不一。加上一交战,忽然狂风骤起,飞沙走石,霎时天昏地暗,虽近在咫尺却不相辨。两军大惊,官军一溃遂不可收拾,其他诸军损失惨重,唯李光弼与王思礼“整勒队伍,全军以归”。这年七月,郭子仪遭宦官鱼朝恩谗毁而解职,李光弼代其朔方节度使、兵马副元帅之职,并知诸节度行营。李光弼奉命离开太原,走马赴东都上任。不久,史思明分四路南下,兵临汴州(治今河南开封)。汴滑节度使许叔冀未能遵照李光弼坚守的指示行事,一战失利,投降了叛军,致使东都无险可守。李光弼认为叛军乘胜而来,利在坚守,不利速战。洛阳之北的河阳(今河南孟县)北连泽、潞两州,利则进取,不利则退守,表里相应,使叛军不得西进。于是他整军退守河阳。史思明进入洛阳时,已人走城空,一无所获,他又怕李光弼从背后袭击,不敢居洛阳宫,退驻白马寺南,并于河阳南筑造月城,与李光弼军南北对峙。
史思明有良马千余匹,每日于河南岸洗马,以示其多。李光弼于诸营搜罗牝马五百匹,当史思明的良马来到水边时,群牝马嘶鸣不止,史思明战马闻牝马叫声,皆浮河水而来,被唐军抓获赶到城内,史思明千余匹良马一时丧失殆尽。史思明欲断绝唐军粮道,李光弼驻军野水渡设防。傍晚回河阳城,留下部将雍希颢率千余人守栅寨,并对他说:“贼将高晖、李日越、喻文景皆万人敌也,思明必使一人劫我,我且去之,子领卒待贼于此,至则勿战,降则俱来。”诸将莫明其妙,有的还觉得好笑。这天,史思明果然召来李日越,让他引兵至野水渡,袭劫光弼军营。最后还告诉他说:“必获李君,不然无归。”李日越率骑兵于凌晨突至野水渡唐军营,方知李光弼已回城,怕回去被史思明杀害,遂投降,与雍希颢一同来拜见。将士们无不佩服李光弼料事如神。得此消息,史思明气极败坏,列战船数百艘,前面是火船,欲顺流烧毁河上浮桥。李光弼事先制造了数百根百尺长竿,后边以巨木支撑着,竿头装用毡包着的铁叉,以阻止火船。由于火船不能靠近浮桥,不一会自焚而灭。光弼军又于桥上发射炮石,叛军战船多被击中而沉入水中。最后史思明损兵折将,狼狈败逃。史思明重整旗鼓,再次进攻河阳。河阳有南、北、中三城。李光弼命骁将李抱玉守南城,自己据守中城,兼顾北城。史思明与伪宰相周挚先攻南城,李抱玉血战两天,杀伤甚多,史思明攻不下,改命周挚攻中城。李光弼先于城外设置木栅,栅外挖壕,深、宽各二丈,由大将索元礼据守。周挚依仗人多势众,直逼木栅。又用车运土填壕,并开栅为门。当叛军刚进栅门,立脚未稳时,索元礼率敢死士突然冲出,奋勇杀敌,大败叛军。
周挚收兵,整军布阵,猛攻北城。李光弼立即率军进入北城。这是一场殊死战。李光弼命其将郝廷玉率三百名骑兵攻击敌阵西北角,又命论惟贞率二百名铁骑攻击东南角,其余将士进击中部。他与诸将约定:要视麾旗作战,如麾旗挥动缓慢,任你们自由冲杀;如连挥三下触地,则万众齐入,拼死冲杀,少退者格杀勿论。他常把短刀置入靴中,这时对诸将说:“战,危事,吾国之三公,不可死贼手,万一战不利,诸君前死于敌,我自刎于此,不令诸君独死也。”表示誓与诸将同生共死。部署已毕,诸将率军冲入敌阵。经过一阵厮杀后,李光弼见时机成熟,连挥三下,麾旗触地。唐军立时奋勇百倍,呼声震天动地,一起拼命冲杀,叛军抵挡不住,溃不成军。这一仗,叛军被斩首千余级,俘虏五百人,溺水而死者又千余人。叛军大将徐璜玉、李秦授被俘。周挚率数骑逃去。史思明不知周挚军全线溃败,仍在攻南城,李光弼出示俘囚,史思明才知周挚败退,只得垂首丧气退回。河阳大战的胜利,不仅极大地挫折了史思明叛军的锐气,也阻止了叛军的西进,保全了西京长安,使关中地区免遭叛军的再次蹂躏。李光弼劳苦功高,肃宗加授他为太尉兼中书令,并诏令褒奖其赫赫战功。诏令说:“自狂胡构祸,寰宇未清,义勇竭于臣心,勋庸著于王室。顷者余孽,尚稽天讨,蚊蚋相依,仍侵河外,是用仗其深略,为我长城,有穰苴之法令,亚夫之威略,远能挫群凶之锐,全百胜之师,为庙堂之宗臣,成军国之重任。”邙山之败,愧恨而卒李光弼于河阳同史思明大战数月,成功地阻止了叛军的西进,同时又收复了河阳之北的重镇怀州(今河南沁阳),改变了腹背受敌的局面。这时有人传言:驻守洛阳的叛军都是燕地人,久戍思归,上下离心,如果出击,可一战破敌。毫无军事经验的陕州观军容使鱼朝恩信以为真,屡次上言肃宗,请进攻洛阳。被胜利冲昏头脑的唐肃宗又犯了当年玄宗迫使哥舒翰出关作战的错误,命令李光弼立即进取东都洛阳。深谙敌情的李光弼上奏说:“贼锋尚锐,未可轻进。”这时朔方节度使仆固怀恩嫉恨李光弼军法严明,也随声附和鱼朝恩,妄称东都可取。于是,唐肃宗促使李光弼进取洛阳的使者相继于道。李光弼迫不得已,命郑陈节度使李抱玉守河阳,遂与仆固怀恩率兵并会同鱼朝恩及神策节度使卫伯玉进攻洛阳。
上元二年(761)二月,唐军在洛阳之北邙山摆开阵势。李光弼命唐军依险设阵,而仆固怀恩却布阵于平原开阔地。李光弼告诫他说:“依险则可以进,可以退;若平原,战而不利则尽矣。思明不可忽也。”命他把军队移到险处,勇而刚愎的仆固怀恩却拒不听命。史思明乘唐军布阵未定之际,挥师冲杀过来,唐军阵脚大乱,死者数千人,军资器械遗弃殆尽。李光弼、仆固怀恩渡过黄河,退守闻喜(今山西闻喜),鱼朝恩、卫伯玉也逃回陕州。李抱玉听到邙山溃败的消息惊慌失措,丢弃河阳而逃。邙山一战,官军损兵折将,河阳、怀州这两个军事要地皆拱手让给了叛军。叛军乘胜西进,惊恐不安的唐廷急忙增兵陕州,以阻止叛军西进。
邙山之败完全是由唐肃宗轻信宦官鱼朝恩的无知妄言而作出的错误决策所造成的,但身为副元帅的李光弼却引咎责躬,一再请求贬职,肃宗只得罢免了他的副元帅、太尉之职,以开府仪同三司、侍中,领河中节度使。
叛将史朝义乘邙山之捷率军南下,进攻申、光等十三州。唐肃宗不得不再次启用深孚众望的李光弼,任命他为河南副元帅、太尉,兼侍中,都统河南等八道行营节度,出镇临淮(治今江苏盱眙)。李光弼奉命,即刻带病开赴临淮,而监军却以为兵少,请退保扬州,以避敌锋。李光弼拒绝了这一建议,他说:“朝廷以安危寄我,贼安知吾众寡?若出不意,当自溃。”遂一路疾驱进入徐州,然后挥师西进,一举收复许州,斩敌千余人,并活捉了二十二名叛将。史朝义分兵攻宋州,李光弼又击败其军。宝应元年(762),李光弼进封临淮王,并图像于凌烟阁,给以功臣殊誉。
安史之乱已持续了七年之久,关中、河北、河南连遭兵燹,唐朝的赋税收入主要依靠江南八道,人民负担日渐加重,于是在翁山(今舟山群岛)爆发了以袁晁为首的农民起义。起义军迅速攻占了台州(今浙江临海)、信州(今江西上饶)等郡,一时发展到二十万人。李光弼遂命部将张伯仪进攻衙州,击败了袁晁义军。至广德元年(763),张伯仪擒获了袁晁,镇压了这次农民起义。
宦官鱼朝恩因建议肃宗进取洛阳,致有邙山之败,他在羞愧之余,反迁怒于李光弼。骠骑大将军兼内侍监程元振嫉贤害能,也深忌李光弼的战功。肃宗末年,二人专权用事,一再中伤李光弼。自山南东道节度使来瑱遭程元振谗言被诛,李光弼深自不安。这年十月,吐蕃军进犯京师,即位不久的唐代宗仓皇逃至陕州,诏令李光弼勤王。他虽拥有重兵,但因惧怕遭鱼朝恩等宦官的陷害,迁延不敢赴援。代宗返回京师,任命李光弼为东都留守,以观察其意向。李光弼又以就江、淮运粮为由,领兵返回徐州,拒不就任。代宗将其母迎至京师,供给优厚,以解嫌疑。
由于李光弼处危疑之地,拥兵不朝,诸将田神功等举止轻慢,李光弼从此失去了往日的威严。他抑郁成疾,于广德二年(764)八月卒于徐州。享年五十七岁。赠官太保,谥曰武穆。
李光弼足智多谋,在其戎马生涯中,善于出奇制胜,以少胜多。他治军威严而有方,代郭子仪为朔方节度使后,营垒、士卒、麾帜无所更改,而当他号令后,军威更加威严。被誉为“自艰难已来,唯光弼行军治戎,沉毅有筹略,将帅中第一”。在平定安史之乱中,立下了赫赫战功。史家称他“与郭子仪齐名,世称李郭,而战功推为中兴第一”。