颜真卿小颜杲卿十六七岁,为平原郡太守,也是安禄山属下,募兵达万人。颜杲卿遇害后,河北一些忠于唐朝的州县推举颜真卿为盟主,组织了十几支队伍,从太行山以东由邺城、幽陵进发,配合李光弼讨伐燕军。队伍虽然庞大,也是由乡勇临时拼凑,号称十万之众,其实没有多少战斗力。
燕军蔡希德攻饶阳(今河北衡水市境内),用一支游军就截断他们的救兵。颜真卿信心不足,想招在信都败退的贺兰进明,还多次派人向灵武的肃宗表忠心(他是中原最早知道肃宗登位的大臣),汇报军情。李亨对颜真卿很满意,任命为工部尚书兼御史大夫,复任河北招讨使。至德元载,颜真卿败绩,损失万余人,逃奔肃宗身边。
安禄山入东都洛阳以后,原本亲领大军与崔乾祐等攻潼关,打算再入长安。忽然听闻后方颜氏兄弟背叛,留下固守北方的檀州刺史(今北京密云区)张献诚(为安禄山恩人张守珪的次子),以及心腹将领何千年、李钦凑等全被颜杲卿设计除掉。安禄山十分震惊,不得不改变计划,让史思明和蔡希德两个大将引军返回河北解决后方危机。史思明和蔡希德很给力,花了一些时间初步摆平危机,但严重削弱安禄山南下的实力,且在时间上消耗较多,一鼓作气的声势已经大大受挫。
史思明趁此返回的机会坐镇范阳,很快被朔方军困在河北,面临从西面而来的郭子仪、李光弼两股朔方军主力,尤其李光弼与史思明较长时间对峙在常山一带。由于安思义被当地团结兵擒获,被李光弼招降,成为常山战役的一个转折点,史思明陷入困境,促使李光弼收复河北。
史思明退到赵郡、博陵一带,蔡希德退到巨鹿。然后郭子仪、李光弼接连追击,导致史思明分兵,让蔡希德回洛阳向安禄山求援,得到牛廷玠(也是安禄山非常倚重的人,史思明出征后,接任范阳节度使)领两三万人支援,史思明兵力增到五万多人,反击郭子仪所在恒阳(今属河北保定市境内),但被郭子仪防守消耗,最后在嘉山战役(嘉山位于保定市曲阳县东)中再次失败,史书形容燕军一败涂地,大半被消灭,残存数千人,主帅史思明一度失踪,最后靠着铁枪一瘸一拐的徒步返回军营,非常狼狈,洛阳与范阳之间这期间的联络被切断,这是前期河北局势变化的脉络。
与河北同时进行的河南境内则是更为艰苦的血战。张巡,一个今天已经有些陌生的名字,或者被夸大为一代名将。实际张巡是很标准的读书人,参加中宗景龙年间科举,获得进士出身。更重要的一环,张巡在开元后期曾是太子通事舍人,当时的太子就是李亨。虽然时间不长,但在正统读书人心中,天子和太子都是最高的忠诚目标。
史书指张巡在地方任职出色,天宝末年杨国忠为相,张巡不愿意听从安排返回长安,出任清源县令(今河南周口市鹿邑,与睢阳区毗邻)。安史大军进河南时,张巡还不在睢阳,他听闻安禄山南下以后,率百姓痛哭于玄元皇帝庙中,历史上鹿邑素来传说是老子的故里。
先前鲁炅等河南境内的官军连连败绩,原雍丘县令(今河南杞县)令狐潮投降安禄山,单父县令(今山东单县)贾贲与张巡汇合攻占雍丘,令狐潮汇合安禄山手下李庭望意图反击,贾贲出城抵抗兵败战死。城中守军就推张巡为主将,只剩下三千多人。
令狐潮多次攻打雍丘未能奏效,至德元载(756),李怀仙(营州契丹族将领,安禄山的副将,所带契丹、奚族兵)、杨朝宗(安禄山所任命陈留长史)、谢元同等数万人围攻,雍丘城外大约聚集四万燕军,张巡困于城中一个多月。
令狐潮拿唐玄宗逃亡巴蜀为由,瓦解守军。《新唐书》写劝降:
“天下事去矣,足下坚守危城,欲谁为乎?”张巡答曰:“足下平生以忠义自许,今日之举,忠义何在!”
令狐潮虽然惭愧而走,但一番说辞对守军确有影响,张巡害怕有人意志动摇,设计斩杀了六个有意背叛的将领。
苦守两个月后,粮食耗尽。张巡趁夜亲自领军烧毁敌军粮草,还在城墙设立稻草人赚取敌人弓箭,这些充满小说色彩的段落都出自《新唐书》。最后张巡趁着令狐潮、李庭望疲惫,放弃雍丘转入许远的睢阳,这才揭开更为惨烈的睢阳保卫战序幕。