至德二載(757)正月,安祿山被其子安慶緒殺死。九月,郭子儀率唐軍和回紇騎兵收復(fù)長安。接著,又收復(fù)東都。安慶緒退守鄴郡(治所在今河南安陽)。干元元年(758)九月,唐肅宗調(diào)遣朔方郭子儀、淮西魯炅、興平李?yuàn)J、滑濮許叔冀、鎮(zhèn)西北庭李嗣業(yè)、鄭蔡季廣琛、河南崔光遠(yuǎn)、河?xùn)|李光弼、關(guān)內(nèi)澤潞王思禮等九節(jié)度使率兵六十萬,進(jìn)討安慶緒。又以宦官魚朝恩為觀軍容宣慰處置使,協(xié)調(diào)和指揮戰(zhàn)事。十月,唐軍進(jìn)圍鄴城,安慶緒向留守范陽的叛將史思明求救。二年(759)三月,史思明率兵十三萬赴援,與官軍在安陽河北相遇。雙方未及布捙,大風(fēng)突起,飛沙走石,天地晝晦,兩軍將士大驚,官軍向南潰逃,叛軍向北撤退。不久,史思明率部來到鄴城南,安慶緒出城慰勞,被思明執(zhí)殺,叛軍返回范陽,思明自稱大燕皇帝。
上元元年(760)四月,史思明率軍南下,攻占東都。次年二月,史思明被其子史朝義所殺,朝義即帝位,改元顯圣。寶應(yīng)元年(762)四月,唐肅宗病重彌留。張皇后與越王李系密謀,企圖誅殺專權(quán)宦官李輔國,事泄被殺,肅宗驚嚇而死。
太子李豫即位,是為唐代宗。同年十月,唐代宗以雍王李適為天下兵馬元帥,朔方節(jié)度使仆固懷恩為副元帥,統(tǒng)領(lǐng)諸道唐軍和回紇兵,收復(fù)洛陽,史朝義北逃范陽。唐代宗廣德元年(763)正月,史朝義逃至廣陽(今河北房山東北)附近,由于眾叛親離,自縊而死。其部將李寶臣、李懷仙、田承嗣相繼投降,先后被任為成德、幽州和魏博三鎮(zhèn)節(jié)度使,是為河北三鎮(zhèn)。長達(dá)八年之久的安史之亂至此平息。