至德二年(公元757年)二月,叛军发生内讧。
先是安庆绪弑杀父亲安禄山自立为帝,接着驻扎在范阳的史思明拥兵自重,不听从安庆绪的调遣。
与此同时,李光弼等人在河北牵制、消灭了大批叛军的有生力量。
肃宗认为这是收复两京的绝佳时机,便任命其子广平王李俶为天下兵马大元帅、郭子仪为副元帅,出兵收复两京。
实际上,李俶仅是名义上的总指挥,统领全军的责任全系于郭子仪一身。
在郭子仪的指挥下,唐军组织得当、稳扎稳打、大败叛军,先后收复长安、洛阳以及河东、河西、河南等失陷各郡。
两京光复后,郭子仪因赫赫战功被加封司徒,封代国公,食邑千户,又进位中书令。
乾元元年(公元758年)九月,肃宗调集郭子仪等九位节度使的军队,组成二十万联军讨伐安庆绪。
然而,联军未设元帅,而是由根本不懂军事的宦官鱼朝恩负责协调,导致各地节度使互不统属、各自为战,战事因此也拖延了许久。
随着史思明降而复叛,发兵救援安庆绪,唐军在腹背受敌的情况下无奈撤军。
鱼朝恩素来妒忌郭子仪多次建功,便找借口向肃宗进谗言,把失败的责任全推到郭子仪身上,致使他被罢免兵权,回京赋闲。
失去郭子仪的唐军连吃败仗,东都洛阳再度落入叛军之手。
朝野上下一致认为叛军尚未平定,正当用人之际,不应削去郭子仪的兵权。
肃宗也意识到这一点,准备再次起用他。
然而,鱼朝恩又从中作梗,郭子仪最终还是未能重掌帅印。
叛军占据洛阳不久,京城长安再次面临险境,河东(今山西太原)一带的驻军相继发生内乱,多地节度使被杀,朝廷十分担心他们和叛军结盟。
无奈之下,肃宗不得不再次起用郭子仪前去平定叛乱,晋封其为汾阳郡王。
此时,肃宗病危,在病榻上对郭子仪嘱托道:“河东之事,一以委卿。”
郭子仪赴任后,河东诸镇将帅皆听令朝廷,不敢再作乱。
不久,玄宗、肃宗相继驾崩,代宗即位。
宦官程元振自恃拥立代宗有功,嫉恨郭子仪,不断进谗言、挑拨离间,郭子仪再次被解除兵权。
广德元年(公元763年)冬天,吐蕃二十万大军乘边防空虚之际侵入关中,骚扰京畿地区,整个京师为之震动又无计可施。
危急时刻,代宗急令郭子仪为关内副元帅,镇守咸阳御敌。
由于郭子仪长期赋闲在家,从前的部属都已离散,出征时只有二十多员将领供其调度。
与此同时,吐蕃军绕开咸阳,直指长安。
郭子仪急行军至长安后,代宗已仓皇东逃,长安也被吐蕃攻占并洗劫一空。
郭子仪着手收编被吐蕃军打散的唐军,组建起四千多人的军队。
虽然各地支援郭子仪的兵马陆续到达,但仍是敌强我弱、敌众我寡。
于是,他采用疑兵之计,虚张声势,吐蕃大军果然被迷惑,仓皇逃出长安。
这是他第二次收复京城。
代宗返京后悔恨不已,对他说道:“朕用卿不早,故及于此。”
随后,代宗赐给他享有特权的铁券,并下令在凌烟阁为其画像,以示褒奖。