此前,史思明在河北一直在与李光弼的苦战中,战败退守博陵,被李光弼团团围困,但长安的失陷改变了整个局势。李光弼闻讯后率军撤围西入井陉,还太原。史思明再度攻占常山并占领河北全境。757年正月,史思明自博陵、蔡希德自上党、高秀岩自大同、牛廷玠自范阳率兵共10万,会攻太原,这是太原(晋阳)见证过的无数次激烈的攻防战中最为激烈的一次。
当时李光弼所部精兵都已调往朔方,太原所剩只有河北兵5000人,加上缺乏训练的团练兵也不过1万人左右。面对叛军的强大攻势,诸将都惶惧不安,李光弼则指挥若定,组织起了严密的防守。史思明围攻太原月余不下,便选精锐士卒为游兵,让他们进攻城南,再转攻城西,自己则率兵攻城北,而后转攻城东,试图寻找唐军防守漏洞。然而李光弼治军严整,史思明无懈可击。李光弼又派人挖掘地道,通至城外,叛军在城外叫骂挑战,常冷不防被唐军拖入地道,拉至城上斩首,吓得叛军胆颤心惊,走路时都低头看地。叛军用云梯和筑土山攻城,唐军便在城下先挖好地道,使其靠近城墙便塌陷。李光弼为阻止叛军强行攻城,还在城上安装投石机,发射巨石,一发可击毙叛军20余人,史军士卒死于飞石之下者甚众,被迫后退,但围困愈加严密。李光弼为打破叛军围困,以诈降手段,与叛军约期出城投降,暗地派人挖掘地道直至叛军军营之下,先以撑木支顶。到约定之日,李光弼派部将率数千人出城伪降。叛军不知有诈,正在调动出营时,突然营中地陷,死千余人,顿时一片慌乱。唐军乘机擂鼓呐喊,猛烈冲击,歼灭叛军万余人。太原激战正酣时,安庆绪谋杀了安禄山,夺取帝位,命史思明回守范阳,留蔡希德等继续围困太原。二月,李光弼率军出击,大破蔡希德军,歼其7万余人,缴获大量军资器械,蔡希德率残兵仓惶逃走,太原之围遂解,此战也成为中国史上最著名的以少胜多的守城战例之一。
安庆绪召回史思明后,赐姓他姓安,名荣国,封爵为妫川郡王。叛军攻陷两京后,不停将掠得的珍宝运往范阳,堆积犹如小山丘。史思明见了以后非常眼红,加上自己手握重兵,实力雄厚,又看不起安庆绪,于是起了取而代之的念头,开始不怎么把安庆绪的号令当一回事,安庆绪也无可奈何。唐军的局势则开始有所好转,四月,以郭子仪为天下兵马副元帅,开始率兵攻长安,初战失利。九月,广平王李俶与郭子仪领兵15万,在长安城南香积寺北与10万安军展开激战,唐军借来的回纥精锐骑兵4000人突然出现,唐军大胜,击斩6万余人,乘胜克复长安。十月,又在新店击败安军15万,收复洛阳。安庆绪率部逃往邺城。十月二十三日,唐肃宗李亨进入长安,百姓出城20里迎接,都流着泪高呼“万岁”,李亨也激动得热泪盈眶,随后又身穿素服,到被叛军摧毁的太庙废墟之前哭祭三日。十二月初,李隆基也回到长安,二十一日,正式将传国玉玺传给李亨。此前,张巡和许远率众苦守汴河战略要地雍丘和睢阳,与优势叛军前后进行大小400余战,歼其12万余人。最后虽因孤军奋战、粮尽援绝而城陷牺牲,但粉碎了叛军夺取唐廷赖以生存的江淮财赋基地的企图。鲁炅坚守南阳历时一年,南阳失陷后又退保襄阳,挡住了叛军南下襄、邓的道路,确保了唐王朝江汉漕运的畅通。
安庆绪节节败退,其将李归仁率精兵“曳罗河”、同罗及六州蕃兵共3万余人逃往范阳,沿途大肆抢掠。史思明闻讯后派人招抚,“曳罗河”及六州蕃兵愿意归顺,但同罗兵不从。史思明纵兵攻击,同罗兵大败逃走,抢来的人口、牲畜和财物全部被夺走。史思明得到了这支精兵后,部下兵力达到8万余人,控制地区达13个郡,已经远远超过了安庆绪。安庆绪对他极为忌惮,十二月,他派阿史那承庆和安守忠率5000精兵以征调兵马为名前往范阳,企图寻机除掉史思明,夺其兵马。但是这种水平的阴谋诡计无法瞒过老奸巨猾的史思明,他与手下商议,认为叛军势力已经难以长久,而且又担心安庆绪以燕皇帝之名召集兵马前来进犯,于是决定归降唐廷。
阿史那承庆和安守忠仍被蒙在鼓里,他们率军来到范阳后,史思明率数万兵马开城列阵相迎。他派人传话,以好言软语骗得阿史那承庆放松戒备,然后将他们请进城饮酒作乐。同时派兵迅速缴了阿史那承庆部队的械,愿留者重赏留用,不愿留者发给钱粮遣散。第二天,史思明囚禁了阿史那承庆和安守忠,然后派部将窦子昂前往长安,宣称以所辖13郡和8万兵马归降,同时传令守大同的高秀岩归顺。李亨闻讯大喜,但河南节度使张镐和李光弼等人都认为史思明是安禄山叛乱的死党,不是真心归顺,必然复叛。李亨没有理会,封史思明为范阳节度使、归义王,封乌承恩为范阳节度副使,和内侍李思敬一起前往范阳宣诏。
乌承恩之父曾经是史思明的上司,对他有恩。安禄山起兵叛乱时,乌承恩是信都太守,他举郡投降史思明。叛军势力衰落时,乌承恩想立功赎罪,多次暗中游说叛军兵将归顺,有人报告史思明,史思明觉得证据不足,没有追究。不久,乌承恩入长安。李亨委任他为副使,其实已经有让他见机行事的意思。到达范阳后,他在旅馆中和儿子密谋诛杀史思明,被史思明的间谍听到。史思明马上捉住了他们,责问:“我有什么对不起你?竟然这样对待我?”乌承恩求饶说这都是李光弼的计谋。于是史思明伪造了李光弼给乌承恩的密信、准备杀死的随史思明反叛的范阳将士名册和唐廷赐给阿史那承庆共谋史思明的铁券,然后召集将士官吏,向西大哭:“臣一片赤心,不负国家,为什么竟然要谋杀臣?”下令乱棒打死乌承恩父子,株连被杀者共200余人,囚禁了李思敬,并上报唐廷。李亨授人以柄,极其被动,只好派使者对史思明说:“这不是朝廷和李光弼的意图,是乌承恩一人所为。”但是恰好唐廷处置降敌官员的公告传到范阳,史思明心中更为不安,和部下商量:“陈希烈等人原本身为朝廷重臣,尚且不能免死,何况我们!”部下将士也群情汹涌,于是史思明于758年六月上表唐廷,要求杀掉李光弼,并宣称如果唐廷不照办,他自己就要亲自率兵去太原杀李光弼,其实已经等于公开宣称复叛。当初曾劝史思明归唐的耿仁智因不愿从他复叛被杀。
安庆绪则被郭子仪整治得惨不堪言,十月,朔方节度使郭子仪、淮西节度使鲁炅、兴平节度使李奂、滑濮节度使许叔冀、镇西北庭节度使李嗣业、郑蔡节度使季广琛、河南节度使崔光远、河北节度使李光弼、关内泽潞节度使王思礼九个节度使率兵20余万将安庆绪围困在邺城(即相州)。李亨认为郭子仪和李光弼功绩相当,难以互相统属,于是不设行营元帅,却派宦官鱼朝恩为观军容宣慰处置使,作为实际上的统帅,节制诸军。安庆绪向史思明求助,并许诺解围后把大燕皇帝之位让给他。史思明知道安庆绪如果覆灭,自己必然势孤,于是统兵13万,先遣李归仁率步骑1万进驻离邺城60余里的滏阳,遥为声援,然后分兵三路南下。十二月,史思明攻占魏州,屠城,3万余唐军将士及民众被杀害。其后他却按兵不动,759年正月,自称大圣燕王。李光弼看出史思明按兵不动,意在麻痹唐军,企图乘唐军懈怠而进行袭击。建议分兵直逼魏州,迫史思明出战,史思明必不敢出;时间一久,邺城定为唐军攻克,史思明也就容易对付。但被鱼朝恩拒绝。此时安庆绪自洛阳退守邺城已经一年,修固城池,充实储备。唐军自冬至春,攻城四个月都不能下。著名猛将、镇西北庭节度使李嗣业亲自率部攻城,为乱箭射中,于正月二十八日死于军中。李嗣业善用陌刀,曾参加过征讨十姓苏禄、小勃律、突骑施的战争,威震西域。
二月,唐军筑堤两重,挖堑三重,堵漳河水灌城。城中河水四溢,叛军粮尽兵疲,但安庆绪仍死守待援。唐军因无统帅,指挥不统一,行动不协调,进退互相观望,又以为邺城危在旦夕,遂产生了松懈情绪。史思明见邺城危急,自魏州率主力援邺,使诸将离城50里分次扎营,击鼓为号,遥相呼应,又每营选精骑500,昼夜轮番抄掠,以疲惫唐军,还派遣部队伪装唐军,劫掠和焚烧唐军运粮车船,致使唐军缺粮,军心动摇。史思明见时机已到,便率军直抵邺城。三月初六,唐军号称步骑60万,列阵于邺城北面的安阳河北。史思明率精兵5万出战,唐军以为是小股游军,漫不在意。史军发起猛烈攻击时,李光弼、王思礼、许叔冀、鲁炅四节度使方率部迎战。战况非常激烈,双方死伤甚众,鲁炅中箭受伤,退出战斗。郭子仪率军继后,未及列阵,忽然狂风大作,飞沙走石,天昏地暗,对面不能相认。唐、史两军皆大惊,唐军南撤,史军北奔,双方丢弃甲杖辎重无数。唐军因师老兵疲,军无斗志,一退不可遏止,丢弃甲杖辎重无数。郭子仪退保洛阳,其部战马万匹,只剩3000,甲杖10万,几乎全部丢弃。其他节度使也各自溃归本镇,仅李光弼、王思礼全军而还。
唐朝的宦官掌权始自高力士,只是高力士比较机敏忠诚,所以没有为祸。李亨为太子时,常遭到李林甫、杨国忠的陷害,身边可以信任的人只有宦官李辅国和妃子张良娣。即位后自己才能平庸,军中没有威望,所能依靠的也只是李辅国、鱼朝恩、程元振这些宦官。这次不设主帅,却别出心裁地派完全不懂军事的宦官鱼朝恩担任主帅,名义上是担心郭、李不能互相统属,其实是惧怕他们功高权重、无法节制。李亨此举不但使得唐军责任不明、互相观望、无法协同配合,造成大败,更严重的恶果是使唐朝此后宦官当政一发不可收拾。
史思明得知唐军已经撤退后,自沙河收集部众,还屯邺城南。此时安庆绪得到大批粮草,于是和孙孝哲、崔乾祐商议要闭门以据史思明。其他将领则认为史思明兵势强盛,不可背约。史思明即不和安庆绪联系,又不追赶唐军,只是每日在军中置酒慰劳将士。张通儒、高尚向安庆绪请示说:“史王远来救援,应该出城拜谢。”安庆绪命他们先去。史思明耍了个小手腕,一见到二人后就动容流泪,厚礼相待。几天后安庆绪仍不出城,史思明就派人劝诱他。安庆绪不知所措,只好派人上表向史思明称臣,请其入城,愿意献玺让位。史思明看过表文后,一边假惺惺地说:“何至如此?”一边把表文交给部下传看。部下都大呼万岁。然后他写信给安庆绪说表示愿意和他结成兄弟邻邦,和唐鼎足而立,而且不敢接受他向自己称臣,并将安庆绪的表文退回给他。安庆绪大喜,请求史思明和他结盟,史思明同意。安庆绪便率300骑兵出城来到史思明军中,安庆绪拜谢道:“臣不能克尽职责,丢掉了两京,幸亏大王念及和太上皇(安禄山)的情谊,前来救援。大王的恩德,臣粉身碎骨也难以报答。”史思明这时突然翻脸,大义凛然地说:“丢失两京不算什么。你身为儿子居然杀父篡位,天理不容!我要为太上皇报仇!”马上命令左右将安庆绪拖出去斩首,安庆绪的四个弟弟和高尚、孙孝哲、崔乾祐等人也同时被杀。
史思明略施小计除掉了安庆绪后,整军入城,收编了城内兵马,打开府库赏赐将士。然后派安太清攻取怀州,留下儿子史朝义守邺城,自己返回范阳。四月上旬,史思明在范阳称大燕皇帝,立长子史朝义为怀王。史思明重新控制了河北,叛军内部的混乱形势有所改善,军势更盛,唐军面临着不利的局势。
邺城之战后,鱼朝恩将失败责任权推到了郭子仪的朔方军身上,并不断向李亨进谗言,759年五月二十三日,李亨下诏以李光弼代替郭子仪为副元帅(元帅为广平王李俶,副元帅才是实际上的统帅)。九月,史思明统兵十余万,分兵四路进攻河南,一路进军顺利,直逼洛阳。李光弼手中仅有兵马2万余人,于是决定放弃洛阳,退守河阳。史思明占领洛阳后,于十月四日进攻河阳,凭借优势兵力猛攻。李光弼在军靴中插上一把短刀,激励将士说:“我是国家三公(李光弼此时任司空),不能死于叛军之手,万一战斗失败,各位战死阵前,我就自刎于此。不会只让大家牺牲。”仆固怀恩父子、白孝德、李抱玉、郝廷玉、荔非元礼等唐将奋勇作战,其中白孝德阵斩叛军猛将刘龙仙。唐军最终获胜,生擒叛将徐璜玉、李秦授,智降叛军勇将李日越、高庭晖,歼敌1万余人,俘获8000余人,夺取战马千余匹。史思明与坚守河阳的李光弼对峙一年四个月,屡次出击都被击败。
史思明部下的军队多为胡人骑兵,精于野战却拙于攻城,加上李光弼擅长防御,所以屡战屡败。史思明见不能力取,心生一计,于761年二月派出间谍潜入长安,散布谣言说:“叛军将士多为燕地人,长期在外征战,人人思乡,士气低落。官军此时进攻,必然可以大胜。”鱼朝恩听到这些流言后马上报告李亨,李亨急于取胜,命令李光弼进军收复洛阳。李光弼上书朝廷,指出叛军兵锋尚锐,不可轻率进攻。朔方节度使仆固怀恩刚愎自用,部下多恃功不法,而李光弼治军严整。仆固怀恩害怕李光弼,极力设法摆脱他的管辖,因而附和鱼朝恩,认为洛阳可取。李亨于是相继遣使,催李光弼出兵。李光弼不得已,只好下令李抱玉守河阳,自与仆固怀恩会同鱼朝恩及神策节度使卫伯玉进攻洛阳。李光弼命令仆固怀恩依托邙山据险布阵,但仆固怀恩却布阵于平原。李光弼指出:“据险列阵,可进可退;若在平原列阵,一战不利就会全军覆没。”命仆固怀恩移阵于险要之地,仆固怀恩拒绝。史思明乘唐军列阵未定,突然发起攻击。唐军大败,死伤数千人。李光弼、仆固怀恩渡过黄河,退保闻喜,鱼朝恩、卫伯玉退守陕州,李抱玉弃河阳奔泽州,河阳、怀州相继失陷。
史思明乘胜追击,令史朝义任先锋追击。三月七日,史朝义进至姜子坂,被卫伯玉拦住,连续多次进攻都被击败。史思明召来史朝义及其部将骆悦大骂,几乎要处斩史朝义等人,他叹道:“朝义胆怯,不能成大事!”三月十三日,史思明又派史朝义依山筑三角城,限一日完工。史朝义基本如期完工,只是尚未抹泥。史思明就赶来监工,看见后很生气,史朝义说:“士兵们干了一天很累,休息一下而已。”史思明大骂:“你为了爱惜士兵,宁愿违背我的命令吗!”还骂道:“攻下陕州后就杀掉你这个没有的东西。”史思明平日残忍好杀,部下稍有过错,动辄诛杀全族。史朝义身为长子,常年跟随史思明作战,处事谦和,体恤士卒,颇得军心,却始终得不到史思明的宠爱。原因在于史思明年轻时贫穷,被乡人轻视,但一个姓辛的富家女子偏偏看中了他,声称非他不嫁,史思明对她非常宠爱,称帝后立她为皇后,辛式所生的儿子史朝清也为他所喜爱,常常想杀了史朝义立他为太子。史思明左右侍从经常遭到他的虐待,怀恨在心,就将他的想法透露给了史朝义。史朝义把这件事和史思明所说的话联系起来,心中非常害怕。他的部将骆悦和蔡文景也担心史朝义若被杀会连累到自己,就劝史朝义:“我们和您死到临头了!废长立幼之事自古常有,请您召见宿卫的曹将军(不知道是名叫曹将军还是姓曹的将军)共商大事!”史朝义下不了决心,骆悦等人说:“如果您不同意,我们就去投降唐军,不能再为您效力了。”史朝义只好答应,当晚,骆悦和曹将军带领300士兵,偷偷来到史思明所住的永宁鹿桥驿,闯入营帐,骆悦手下的周子俊一箭射中史思明手臂,史思明问是谁,众人回答:“是怀王(史朝义的封爵)。”史思明说:“我白天失言,有这种结果也不奇怪。但他杀我太早,使我不能到长安。”又三次大呼史朝义的名字,说:“囚禁我就行了,别招杀父之名!”众人将他绑起来,押到柳泉驿缢死,以毯子包裹尸体,送回洛阳。史朝义在洛阳称帝,然后马上传令杀死史朝清、辛氏和数十名不听号令的将领。结果引起范阳叛军之间自相残杀,死数千人。叛军的节度使们大多是安禄山的旧部,和史思明地位相当,不愿居于史朝义之下,没人听从他的号令。叛军的颓势已经无法扭转。762年四月,唐肃宗李亨去世,太子李俶(已更名李豫)即位(即唐代宗)。十月,李豫以雍王李适为天下兵马元帅,与仆固怀恩率唐军和回纥兵攻克洛阳,歼叛军6万,俘2万,乘胜收复河阳、汴州等地。史朝义逃往河北。河北安史部将见大势已去,纷纷投降唐廷。史朝义在唐军的追击下,于763年正月,窘迫自杀。历时七年零三个月的安史之乱,至此结束。
安史之乱是一场典型的叛乱,毫无正义性可言。叛军每次破城,都大肆劫掠妇女、财货,男子壮者荷担,老弱则被杀死,还经常进行残酷的屠城,完全得不到民众的支持。战乱对北方黄河流域广大地区的经济破坏非常严重,北方大部份地区白骨遍野,人烟断绝,使得经济重心开始向南方转移。战后,朝廷又因实力不足,被迫授叛军将领为节度使,由此形成藩镇割据局面。吐蕃因唐无力西顾,侵扰也日益频繁,致使唐失去了对西域的控制。唐帝国从此由统一集权走向分裂割据,由强盛走向衰落。安禄山、史思明等叛军将帅拥有精锐的军队,也有一定的军事才能,但是完全没有政治头脑,只知道杀戮和抢掠,甚至每次帝位更替都是通过野蛮血腥的子弑父、君弑臣完成。唐军在郭子仪、李光弼等将帅的卓越领导下,在广大人民的支持下,最终取得了代价惨重的胜利。安史之乱不仅仅是唐帝国由盛转衰的转折点,甚至可以说是中国由盛转衰的转折点。