在长安沦陷、玄宗幸蜀、唐廷处于危急存亡之际,朝臣中虽未涌现挺身而出支撑危局的大臣,但在河北、河南地方郡县和朔方军将中,却出现了一批与叛军殊死战斗、决心兴复唐朝的中坚,如颜呆卿、颜真卿、郭子仪、李光弼、张巡、许远等人。正是他们,在各地人民群众的支持下奋力抗贼,才支撑得唐朝没有崩溃。他们各自为战,拖住兵锋甚锐的叛军,限制敌人的进一步发展,使玄宗安然逃往四川,太子北行未受追迫之患。但是,要最后扑灭叛乱,实现光复大业,还必须具有将各种势力加以集中、协调和统帅的力量。自肃宗即位,接管了最高统治权,对平叛进行统一指挥后,形势便发生了巨大的变化。
肃宗在灵武即位,另建唐朝流亡政府,很快便组织了对叛军的反攻。肃宗任李泌为谋主,策划平叛。命朔方节度使郭子仪、河东节度使李光弼指挥唐军,名义上由肃宗长子、广平王李仿为天下兵马元帅,讨伐安史。同时派遣仆固怀恩等,向回纥请兵,与安、史作战。
其时出现了一些有利于唐的军事形势。河北、关中等地人民普遍开展了对叛军的斗争。唐将张巡坚守通济渠沿线的重要城市睢阳,多次击败敌人的围攻,使安军不能扰及江淮。鲁炅坚守南阳,安军不得南侵汉水流域。由是,东南的物资可以从长江溯汉水至陕南。依靠陇右节度使薛景仙固守长安以西地区,使江淮的赋税收入,能由襄阳经汉中运到扶风,唐军供应无乏,支持了新兴的流亡政府。同时,李光弼军坚守太原,连挫安军。郭子仪东进,自洛交(今洛川县北)渡黄河,攻克河东(今山西永济县西蒲州镇),威胁安禄山所控制的洛阳、长安两京地区。而在安史乱军方面,虽然攻下了两京,军事上取得一定进展,但因其烧杀抢掠,不得人心,而且内部矛盾很快发展起来。这些情况都有助于肃宗收复两京。
长安的克复不是一番风顺的,它是广大将士多次浴血奋战的结果。肃宗即位不到三个月,在准备不够充分的情况下,即于至德元年(756年)十月,命宰相房琯将兵收复两京。房琯本非将才,不娴军旅,又悉以军务委李揖、刘秩等书生。房琯统率南、中、北三军,分别自宜寿(周至)、武功、奉天(乾县),向长安进击。结果在咸阳陈涛斜 (今咸阳市东),与贼将安宁忠遭遇,唐军大败,损折4万余人。
至德二年(757年)正月,安禄山内部发生了变乱,其子安庆绪为了夺位,在严庄等人的谋划下,杀死安禄山,自称皇帝。唐军乘机发动攻势,以图夺回长安。是年五月,唐将郭子仪与王思礼合军于西渭桥,叛军安守忠、李归仁军于京城西清渠(今长安县香积寺北)。相守7日,官军不得进。后守忠伪退,官军全力出击。守忠以骁骑9000为长蛇阵,首尾为两翼,夹击官军,官军大溃,军资器械,丧失殆尽。判官韩液、监军孙知古等也被俘虏。