公元756年七月,太子李亨在灵武即位,是为唐肃宗,奉唐玄宗为太上皇。郭子仪率领五万朔方军为其保驾护航,“军声遂振,兴复之势,民有望焉”。
唐至德二年(公元757年),安禄山被亲子安庆绪杀死,史思明不听安庆绪的调遣,安史集团分裂了。朝廷决定展开反击,皇子李俶被任命为天下兵马元帅,郭子仪担任天下兵马副元帅,收复两京的重任落到了郭子仪的身上。
安史叛军中的骑兵原是唐军部队中的精锐,一向勇不可挡,清渠之战中叛军9000骑兵列成长蛇之阵,两翼包抄,唐军溃败,只得退守武功(今陕西武功县)。郭子仪看到了双方实力上的差距,
力主向回纥借兵,唐肃宗把女儿宁国公主嫁给了回纥可汗,4000回纥骑兵赶至凤翔助战,唐军集结了十五万人马,由郭子仪全权指挥,
郭子仪向唐肃宗立下誓言,“此行如果不能获胜,臣将以死谢罪”。
唐军进兵长安城西,以李嗣业为前军,王思礼为后军,
郭子仪自领中军,与安守忠、李归仁的十万叛军对阵。大战开始了,唐军初战不利,抵挡不出叛军的攻势,前军统帅李嗣业眼见情势危急,
脱掉盔甲,袒露上身,挥刀斫杀,他大声呼喊,“今天不拼命死杀敌,我们就要全军覆没”,前军士兵手执大刀,所向披靡,
唐军逐渐占据了格斗的上风。叛军正面进攻未能奏效,埋伏于阵东的叛军骑兵乘机杀出,偷袭唐军后方,唐军大将仆固怀恩率领4000回纥骑兵迎头痛击,叛军骑兵伤亡殆尽,
李嗣业与回纥骑兵冲锋在前,又迂回敌后,中军在郭子仪的带领下奋勇杀敌,双方从中午一直战到晚上,唐军斩首六万余人,取得了振奋人心的大捷。安守忠、李归仁放弃长安,向东撤离。
安庆绪再度集结叛军15万人,在新店(今河南陕县西)与唐军鏖战。
叛军依山列阵,占据有利地形,唐军正面进攻不顺,回纥骑兵迂回到敌后,将叛军伏兵尽数歼灭,然后从侧翼猛攻,郭子仪率领唐军正面夹击,叛军大败,一路东逃。
安庆绪惊恐之下,只带了一千多步骑兵逃到邺城(今河南安阳),东都洛阳收复了,唐肃宗向郭子仪真情致谢,“国家再造,都是你的功劳啊”。
两京光复,郭子仪因功封司徒和代国公,从此名扬四海。接下来,就是整顿队伍,讨伐河北的叛军。
乾元元年(公元758年),九路节度使奉诏讨伐安庆绪,其中郭子仪和李光弼功勋最著,唐肃宗没有指定元帅,仅由宦官鱼朝恩担任观军容宣慰处置使,负责协调军中大员。
郭子仪带兵从杏园(今河南汲县东南)渡河,包围卫州(今河南汲县)。
安庆绪兵分三路,发兵七万增援。郭子仪在土垒后面布置了三千弓弩手,个个箭术精湛,郭子仪告诉他们,“我假装败退,敌军必然追赶至此,到时你们万箭齐发,射杀敌军”。
交战之时,唐军后退,叛军果然追至土垒边上,伏兵箭如雨下,叛军心胆俱裂,唐军斩首四万级,获铠胄数十万,声威大振,安庆绪退回邺城(今河南安阳),坚守不出。
邺城被唐军重重包围,郭子仪引漳水灌城,邺城水漫金山,城内粮食吃完了,就吃野菜树皮,连一只老鼠都能卖到4000的天价。
从冬天一直到第二年春天,邺城还没有攻破。三月,史思明亲率五万精兵挑战唐军,激战中,忽然间狂风呼啸,飞沙走石,天昏地暗,咫尺之间看不清东南西北。
双方都阵营大乱,唐军向南溃退,叛军向北奔逃,辎械丢得漫山遍野,郭子仪带领朔方军退守河阳,拆毁了大桥。此战唐军缺乏统一指挥,损失惨重,各路王师只得撤回本镇。
邺城失利,使宦官鱼朝恩找到了借口,把责任推在郭子仪身上。
唐肃宗召郭子仪回朝,让李光弼代替他指挥朔方军。将士们哭着挽留郭子仪,郭子仪不敢违背皇命,怅然离去。
上元二年(公元761年),李光弼邙山战败,河阳失守。公元762年,太原、绎州(今山西新绎)两地驻军擅杀主帅,朝廷深以为忧。
郭子仪被唐肃宗重新启用,晋封汾阳郡王,当时郭子仪已经年满六十六岁。
叛军方面,史思明杀安庆绪,拥兵几十万与朝廷周旋。唐肃宗又病重,卧塌之上,皇帝告诉郭子仪,“河东的事就全交给你了”。
到了绛州,郭子仪按军法杀掉了王元振等数十人,军乱很快平息,郭子仪带兵接连打了几个胜仗,朝中形势变化,他又被罢免了军权。
新继位的唐代宗李豫受宦官程元振的鼓惑,猜疑郭子仪,郭子仪为了表明心迹,把唐肃宗褒扬他的上千道诏书交给了唐代宗,唐代宗深受感动,向臣子表达了自己的惭愧之意。
宝应二年(公元763年),安史之乱刚刚平定,长安兵力空虚,吐蕃起兵二十万,攻入长安,唐代宗逃到了陕州,作为关内副元帅的郭子仪收集了四千多亡散士兵,白天击鼓张旗,晚上遍地火把,
让百姓告诉吐蕃人,“郭元帅的大军从商州(从今陕西商县)打来了”,吐蕃人信以为真,迅速撤出了长安,唐代宗被迎回了皇宫。他拉住郭子仪的手,感激万分,“用卿不早,故及于此”。
广德二年(公元764年),仆固怀恩不满朝廷封赏,纵兵