當夜,李光弼率軍到了河陽。河陽城中,隻有二萬人馬,所存糧草,也僅夠十日食用。李光弼嚴格地檢閱城中守備情況,合理地配置兵力,一切處理得井然有序。
史思明隨後進入洛陽,這才發現是座空城,一個人、一粒米也沒有留下。史思明一無所獲,又怕李光弼隨後掩襲,沒敢進入皇宮,趕緊出城,將大軍屯駐在白馬寺以南,在河陽城南構築月城,防禦李光弼。
史思明有一千多匹良種駿馬,每天不厭其煩地到河岸的淺灘上給戰馬洗澡。其目的是向李光弼炫耀實力,以瓦解城中守軍的鬥誌。為了再教訓史思明一次,李光弼想出了一條妙計,讓人在軍中選出五百匹母馬,將它們的馬駒關在城內,等到史思明的戰馬到了河邊,把五百匹母馬全部趕出城外,母馬失去馬駒,嘶鳴不已,史思明的戰馬都是公馬,聽到母馬的叫聲,紛紛浮水渡河,結果都被趕入河陽城中。
史思明弄巧成拙,反丟了一千匹良馬,惱羞成怒。他見河陽城被兩股河水分隔,中間有浮橋連通,便想出一條毒計,將數百艘戰船列於河中,點燃前麵的戰船,順流漂下,打算燒掉浮橋。李光弼用事先準備的數百條百尺長杆,根部安裝巨木作支柱,杆頭裝上鐵釵,將火船迎頭叉住,頂在河心,火船無法前進,不一會便化為灰燼。然後如法炮製,後麵的戰船也被叉住,在橋上用“大炮”發射巨石,戰船全被擊沉。史思明的進攻又一次宣告失敗。
史思明計計落空,隻好再一次強行攻城。李光弼看到河陽城的浮橋仍顯薄弱,決定親自率兵駐守。為了爭取時間,他對部將李抱玉說:“將軍能為我固守南城,拖延兩天時間嗎?”李抱玉說:“過了期限怎麼辦?”李光弼說:“過期救兵不到,任憑你舍棄它。”李抱玉領命之後,引兵據守。當敵軍進攻過於猛烈,城池危在旦夕時,李抱玉騙叛將說:“我們的糧草已盡,確實無力再戰,請準許我們明天投降。”叛軍喜出望外,收兵回營,等待李抱玉投降。李抱玉利用這點時間,抓緊做好了守城準備,第二天一早又向叛軍請戰。叛軍上當,怒不可遏,攻打城池更加猛烈。李抱玉在夜間安排了一支隊伍,作為奇兵伏在城外,這時突然殺出,與城內裏外夾攻,殺得叛軍措手不及,死傷慘重,隻得收拾殘部退逃。
史思明在邙山擊敗李光弼後,乘勝進軍,迅速占據十三州的地域,正欲西入潼關,直搗長安。李光弼受命後,匆匆上任,奔赴前敵。途中,監軍使者因兵力太少,建議據守揚州,先圖自保。李光弼說:“朝廷委我重任,我再退縮不前,朝廷還有什麼希望?再說,敵人怎會知道我們人數多少?如若出其不意,敵軍自然潰逃。”
李光弼派兵遣將,分路出擊,終於一舉收複東都洛陽。史朝義屢戰屢敗,走投無路,自縊而死。曆時八年之久的安史之亂,終於結束了。然而朝中佞臣對平亂功臣的迫害也隨之加劇。
唐肅宗的寵臣,驃騎大將軍程元振,專攬朝政,因寸功未立,深感自卑,對有功戰將極為忌恨,伺機加害。節度使來填在洛陽時,程元振私下請托,來填沒有答應他的要求。等他做了宰相後,屢加讒害,唆使曾經投敵的節度使王仲升誣告來填通敵,致使來填被削官流放,賜死於途中,邊將們為此恨之切齒,後來吐蕃興兵犯境,程元振隱而不報,使肅宗狼狽出逃。朝廷下詔征集諸將時,李光弼等功臣擔心被害,無人敢去勤王。肅宗逃到陝州,屯兵徐州的李光弼心有餘悸,徘徊不前。待吐蕃被擊敗後,李光弼寧願到江淮掌管糧運,始終不敢入朝。
李光弼治軍嚴整,每一發號施令,諸將甚至不敢仰視,他每次作戰,必先深思熟慮,定出計謀,然後才遣將發兵。他善於出奇製勝,往往以少數兵力,殲滅數倍於己之敵,當時被譽為“中興第一將”,與郭子儀齊名。
唐代宗廣德二年(764年),李光弼病逝,享年五十六歲。臨終前,他將因功賞賜的絹帛分贈給部下,將士們得知李光弼的死訊,紛紛把這些絹帛披在身上,向主帥致哀,人們從很遠的地方就能聽到三軍的號哭聲。代宗皇帝派使節前往吊唁,追贈李光弼太保的名譽官銜,賜諡號為“武穆”,以紀念和表彰他一生的功績。