此戰,唐軍斬殺叛軍六萬餘人,俘虜兩萬餘人,安太清敗走,其餘殘兵敗將倉皇逃回長安城內龜縮不出。郭子儀心知對方已經成為驚弓之鳥,遂決定對長安城實施夜襲,其部將仆固懷恩雪恥心切,主動請命負責此次奇襲。郭子儀應允,仆固懷恩遂帶領數百名精銳士兵潛入城內,大舉製造混亂後,郭子儀催動大軍發起猛攻,長安城終於回到唐軍手中。第二天,唐軍舉行了盛大的入城儀式,全城百姓夾道歡迎,殺雞宰羊慶賀。很快,肅宗皇帝從靈武遷回長安,郭子儀助其穩定大局之後,便率軍東出潼關,發起了針對洛陽的攻勢。
此時,鎮守洛陽的正是叛軍首領安祿山的兒子安慶緒,當然他已經成為新的賊首。聽說郭子儀率眾來攻洛陽,他派出大將嚴莊和張通儒率領十萬大軍主動迎戰,雙方在新店(今陝西陝縣)遭遇。當時,叛軍在山上占據優勢地形,唐軍在山下處於不利地勢,郭子儀見狀當機立斷,不等陣形擺開,首先派出精銳部隊對敵發起進攻,迫使他們放棄剛剛修好的防禦工事;接下來,他又命令回紇騎兵快速迂回到山後,對敵軍後防發動攻擊;最後,郭子儀親自坐鎮中軍,對叛軍發起了正麵攻擊。兵鋒剛一接觸,郭子儀軍便佯裝敗走,叛軍果然窮追不舍。叛軍追到郭子儀安營紮寨的地方,忽然伏兵四起,原來郭子儀早已為叛軍挖好了陷阱,一戰覆滅了安慶緒的十萬大軍。
安慶緒謀略不及安祿山,膽量同樣不及,眼見嚴莊和張通儒逃回,他立即陷入一陣慌亂當中。嚴、張二人建議主動放棄洛陽,以避唐軍之銳,安慶緒早就沒了主意,聞言立即決定依言行事,留下一批將士殿後,便溜之大吉了。郭子儀見狀,放棄已是囊中之物的洛陽不打,揮師掩殺安慶緒殘部,一路追過黃河,一直到相州(今河南安陽)才勒住馬。這個時候,洛陽的叛軍守將已經看明形勢,郭子儀回師之後便主動出城投降,因而唐軍未費一兵一卒收複了東都洛陽。回朝之後,郭子儀再次被擢升為司徒,獲封代國公。
北伐
兩京收複之後,李唐王朝的龍興之地得以保全,肅宗皇帝遂迎回了在成都避難的玄宗皇帝,並尊他為太上皇。政治方麵,肅宗皇帝重用宦官李輔國和魚朝恩,其中魚朝恩更是得到了監督禦林軍防衛潼關的重任;軍事方麵,肅宗皇帝雖然繼續重用郭子儀,但是已經開始注意牽製他的勢力,以免其坐大。在剿滅史思明的北伐戰事中,肅宗皇帝命令九鎮節度使一起出兵,卻不設元帥一職,隻派魚朝恩出任宣撫使,實際上是權力最大的前線指揮官。應該說,魚朝恩雖然深得肅宗皇帝的寵信,但是他隻會阿諛諂媚,在軍事方麵卻是一竅不通,這就為接下來的時局發展埋下了隱患。
這個時候,史思明雖然退居範陽,但是在重新集結兵力之後,其勢力還是非常龐大的,隱隱有卷土重來的意味。唐乾元元年(758)十月,郭子儀經過悉心準備,從杏園(今河南汲縣)渡過黃河,進逼衛州(今河南衛輝)。安慶緒接到戰報,立即率眾來援,郭子儀故伎重施,用伏兵大亂叛軍的陣形後,催動大軍掩殺,最終得以大獲全勝。安慶緒敗走之後,郭子儀立即回師進攻衛州,不費吹灰之力就占領了衛州城。在此之後,郭子儀連戰連捷,其勢銳不可當。最終將安慶緒的老巢相州變成一座孤城,無可奈何之下,安慶緒隻好以禪讓帝位做條件,向盤踞在範陽的史思明求援。
史思明深知唇亡齒寒的道理,立即派出大將李歸仁率軍來救,他本人也隨後率領大軍趕赴相州。這個時候,由於唐軍的九位節度使已經相繼趕來參加會戰,官軍的總兵力已經多達六十萬人,隻可惜由於群龍無首,各節度使都想保存自身實力,因而相州圍城戰一直持續到次年春天,竟然毫無進展。郭子儀雖然有心破城,但是憑他一部之力很難如願,因而隻能做好打持久戰的準備。不過,相州城外的唐軍度日如年,城內的安慶緒叛軍更是備受煎熬,他們已經吃光了所有能吃的東西,底層百姓甚至出現了易子相食的慘狀。
在這種情況下,郭子儀深知叛軍已經做好了負隅頑抗的準備,在最後的軍事進攻之前,必須盡可能瓦解他們的戰鬥意誌。通過查看周邊地形,郭子儀發現相州城地勢較低,旁邊又有一條大河,因而可以采用水攻。很快,大水灌入相州城,叛軍始料未及,為求活命紛紛爬上製高點。本來,此時的叛軍已經是強弩之末,隻待官軍發起進攻就會被擊潰。但是就在這個時候,郭子儀等人都忽略了始終在外圍遊弋的史思明部,或者說由於史思明部一直沒有實質性動作,唐軍所有節度使都認為他根本沒有心思救援安慶緒。殊不知,史思明之所以會坐山觀虎鬥,乃是想讓唐軍和安慶緒叛軍相互消耗,等到時機差不多了再發起進攻。
郭子儀引水灌入相州城後,眼見安慶緒叛軍就要支撐不住,史思明忽然發動大規模進攻,唐軍各節度使被打了個措手不及,徹底敗下陣來。這一戰,唐軍損失慘重,將士死傷多達數萬,戰馬超過萬匹,兵器輜重無數。此時,唐軍已經和安慶緒叛軍對峙數月,而外圍的史思明部卻利用這個機會養精蓄銳,因而在史思明發動實質性攻勢後,唐軍根本沒有辦法支撐腹背受敵的戰事。於是,在魚朝恩向肅宗皇帝上報後,唐軍開始有秩序地撤離相州,郭子儀也隨眾退守河陽(今河南孟州市),後又負責守衛洛陽。
不料,魚朝恩和肅宗皇帝眼見郭子儀在軍中的威望日益增高,擔心他一支獨大,因而此次把戰敗的責任一股腦推到郭子儀身上。郭子儀百口莫辯,隻能應詔回到長安,他的節度使職位則交給了李光弼。此時,有忠於郭子儀的將士不服朝廷決策,因而準備起兵反對李光弼的統領,並要求朝廷恢複郭子儀的軍職。郭子儀從大局著眼,出麵力勸這些將領服從朝廷決策,不要做出有害於國家同時有利於叛軍的事。應該說,郭子儀最擔憂的正是部將們這樣做,因為他們的做法不但解決不了問題,還會讓自己陷入更大的被動。這些將領對郭子儀言聽計從,最終打消了反抗李光弼的念頭,轉而一心協助李光弼東征西討。
另一方麵,史思明幫助安慶緒趕走了唐軍,按照此前的約定讓安慶緒禪讓。安慶緒根本不想放棄自己“皇帝”位,遂以史思明救援不及時為借口,拒絕傳“位”給史思明。不想史思明惱羞成怒,竟然將安慶緒殺掉,然後回師範陽,自稱大燕皇帝。這個時候,史思明聽說郭子儀被免去節度使職務,一時喜出望外,再不把唐軍放在眼裏。唐乾元二年(759)五月,躍躍欲試的史思明大軍開始向洛陽進發,一路過關斬將,直到逼至洛陽城下。肅宗皇帝接連調兵遣將,卻連戰連敗,不得已隻能再次起用郭子儀。然而,魚朝恩以小人之心度君子之腹,認為郭子儀會因為他此前的陷害而記恨於心,並做出對他不利的事情,最終阻止了肅宗皇帝對郭子儀的起用。