當叛將史思明在河北攻城略地的時候,朝廷讓郭子儀挑選一位能幹的大將,領兵前去平定河北。郭子儀向朝廷推薦了李光弼,李光弼帶領一萬人馬到了洛陽。
公元759年,史思明統率大軍南下,打算進攻洛陽。李光弼得到消息後,命令洛陽城裡的官員和百姓全部撤出。他把兩萬人馬開到黃河北岸的河陽駐紮,保衛洛陽的外圍。等史思明到洛陽時,洛陽已成了一座空城。史思明怕李光弼偷襲,所以帶兵出城,到河陽南岸設立營寨和唐軍對峙。
史思明派手下大將劉龍仙前去挑戰,劉龍仙根本就沒把唐軍放在眼裡,他破口大罵李光弼。李光弼問部將們:“誰去收拾他?”大將僕固懷恩說:“我去。”李光弼說:“這用不着大將去。”偏將白孝德說:“殺雞焉用宰牛刀,我去就行。”李光弼問道:“你要帶多少兵馬?”白孝德說:“我一個人去就行。”李光弼說:“你的勇氣可嘉,但還是帶一些兵去爲好。”白孝德說:“那就給我五十名騎兵做後援,再請大軍爲我擂鼓助威。”白孝德挾着兩支矛,騎馬涉水渡河過去,劉龍仙看他單人匹馬過河來,就跑上前去殺他,白孝德連忙擺手示意。劉龍仙一看這個人不像是來廝殺的,就停下觀看,白孝德走上岸,在離劉龍仙十來步遠的地方站住,劉龍仙又罵起來。突然,白孝德眼睛一瞪,問劉龍仙:“你認識我嗎?”劉龍仙:“誰認識你這無名小輩。”白孝德:“我是白孝德。”劉龍仙:“什麼豬狗。”白孝德大吼一聲,突然手持長矛朝劉龍仙衝去,這時,唐軍的五十名騎兵也已衝過河來,河陽城方向鼓聲大震,喊聲動地。劉龍仙一看形勢不好,打馬就逃,白孝德追上去一矛就把他刺下馬,再一刀又把他的腦袋砍下掛在馬鞍上,然後過河跑回了營門。叛軍見了,人人嚇得膽顫心驚。
李光弼看見史思明每天都在河邊放馬吃草,就下令把唐軍的母馬集中起來趕出城外,把馬駒拴在城內,母馬離開馬駒,都嘶鳴起來。史思明軍中的馬一聽到對岸馬羣的嘶鳴,就浮水泅過河來,唐軍趕緊把它們趕進城裡,賺得了一千多匹好馬。
史思明丟了馬,氣急敗壞,他立刻集中幾百條戰船從水路進攻。船隊前面用一條火船開路,準備把唐軍的浮橋燒掉。李光弼就準備好幾百枝粗大的長竹竿,用鐵甲裹住竿頭,等叛軍的火船開過來,李光弼命兵士站在浮橋上,用竹竿頂住火船,阻止火船前進,直到火船燒燬沉沒。唐軍在石橋上發射石炮攻擊叛軍的戰船,把船上的敵兵打得頭破血流。
史思明幾次進攻河陽,都被李光弼用計打退,最後史思明下了狠心,集中強大兵力兩面夾擊河陽城。他派大將周摯進攻河陽的北城,自己則帶領精兵攻打南城。
北城的唐軍將土看見敵軍黑壓壓的一大片,向城逼近,嘴上雖然不說,心裡卻已慌亂。李光弼鎮靜地說:“大家別害怕,叛軍人數雖多,但是他們的隊伍不整齊,看得出他們有點驕傲,我們肯定能夠打敗他們!”到了正午,雙方還未分勝負。
李光弼又召集部將商量:“據你們觀察,叛軍哪個方向的戰鬥力最強?”部將們回答:“是西北角和東南角。”李光弼點點頭,立刻派兩名將領帶領五百名騎兵,分兩路迎戰西北角和東南角的敵軍。然後李光弼對剩下的將土們說:“你們看我的帥旗行動:帥旗揮動慢,你們可以自己選擇有利的地方出戰。帥旗三次急速着地,就是我發出的總攻信號,看到這個信號,就一齊奮勇向前拼殺,不許後退,後退者定斬不饒!”說完,他拿出一把短刀插在靴子裡,說:“打仗是一件非常危險的事情,你們如果在陣前犧牲,我就用這把短刀自殺,和你們一起爲國捐軀!”聽了這番話,將士們羣情激奮,都勇氣百倍地殺上陣去。沒過多久,部將郝廷玉從陣前轉身回奔,李光弼傳令要殺他,郝廷玉急得大叫起來:“我的馬中箭了,並不是後退。”李光弼給他換了戰馬,他又重新上陣指揮戰鬥。
李光弼看到唐軍士氣正旺,就急速揮動旗幟,發出總攻信號,各路將士看到城頭旗號,都爭先恐後地向前衝殺,叛軍的陣勢急速崩潰,主將帶着幾名騎兵慌忙逃跑了。李光弼把北城俘虜來的叛軍趕到河邊,史思明知道周摯已戰敗,不敢再戰,就撤回了洛陽。公元762年,唐肅宗死後,李豫即位,就是唐代宗。唐代宗調集兵馬,借回紇(hé)兵力,收復了洛陽,走投無路的史朝義被逼上吊自殺。從安祿山發動叛亂,到史朝義徹底失敗,中原地區打了八年內戰,歷史上把這八年內亂稱作“安史之亂”。