唐玄宗西逃,他在马嵬坡为百姓所留,与玄宗分道,北上至灵武。至德元载(756年)七月十二日,李亨在灵武即位。尊玄宗为太上皇,他命郭子仪与李光弼等将领讨伐安史叛军,先后于至德二载(757年)九月和十月收复长安、洛阳两京。
李亨在灵州自行登基后,郭子仪被封为朔方节度使(灵州,在今宁夏吴忠市区),奉诏讨伐,次年郭子仪上表推荐李光弼担任河东节度使,联合河东节度使李光弼分兵进军河北,会师常山(河北正定),击败叛军首领安禄山部将史思明,收复河北一带。
乾元元年(758年),肃宗派朔方节度使郭子仪等统兵20余万攻打安禄山之子安庆绪,安庆绪入邺城固守。郭子仪等人包围了邺城。史思明出动范阳兵十三万想要救邺城。乾元二年(759年),因为唐肃宗没有任命元帅,导致唐军各部队没有统帅,军队进退缺乏指挥。这时史思明率大军到达城外,唐朝官军与之开始大战。
司马光《资治通鉴·卷第二百二十》:乾元二年……思明多遣壮士窃官军装号,督趣运者,责其稽缓,妄杀戮人,运者骇惧;舟车所聚,则密纵火焚之;往复聚散,自相辨识,而官军逻捕不能察也。由是诸军乏食,人思自溃。思明乃引大军直抵城下,官军与之刻日决战。
乾元二年(759年)十月,唐肃宗下诏亲征史思明,群臣上表劝谏阻止,唐肃宗停止了这计划。史思明率叛军进攻河阳,派骁将刘龙仙到城外挑战,李光弼派出白孝德杀死了刘龙仙,叛军大惊史思明列战船数百艘,并在前面设置火船,想要烧掉浮桥。李光弼先准备了长竿数百,用巨木承担其根部,在其头部毡裹铁叉,以阻止火船,火船没法前进,最终自己燃烧殆尽。铁叉有阻止了战船,唐军在桥上发射炮石攻击叛军的战船,被击中的叛军战船都被打沉,叛军没有取胜而离开了。
司马光《资治通鉴·卷第二百二十》:乾元二年……思明怒,列战船数百艘,泛火船于前而随之,欲乘流烧浮桥。光弼先贮百尺长竿数百枚,以巨木承其根,毡裹铁叉置其首,以迎火船而叉之。船不得进,须臾自焚尽。又以叉拒战船,于桥上发炮石击之,中者皆沉没,贼不胜而去。
随后,史思明手下的将领李日越、高庭晖投降于李光弼。史思明再次进攻河阳,李光弼派凤翔节度使李抱玉防守河阳。叛军攻城时,李抱玉出奇兵表里夹击,杀伤了很多叛军。唐军擒获叛军的大将徐璜玉、李秦授。史思明还不知道周挚战败。李光弼驱赶俘虏到河边给史思明看,史思明于是撤退。史思明派大将李归仁率领铁骑5000攻打陕州。神策兵马使卫伯玉用数百骑击破之,李归仁逃走。李忠臣与李归仁等人在永宁、莎栅之间交战,多次击败李归仁。
司马光《资治通鉴·卷第二百二十》:乾元二年……史思明遣其将李归仁将铁骑五千寇陕州,神策兵马使卫伯玉以数百骑击破之于礓子阪,得马六百匹,归仁走。以伯玉为镇西四镇行营节度使。李忠臣与归仁等战于永宁、莎栅之间,屡破之。