唐玄宗天宝十四年冬,安史之乱爆发。数月后,安禄山就攻陷东都洛阳,称帝,国号为“大燕”。由于大唐王朝承平日久,而安禄山早有反意,声势浩大,于是一些州县的太守、县令早被燕军的气势吓得手足无措,望风而降。
天宝十五年,燕军将领张通晤攻陷宋、曹等州,谯郡太守杨万石投降燕军,而真源县正是在谯郡的辖地内。杨万石降敌后,又逼张巡为长史,并令其向西接应燕军。张巡得知后很气愤,率吏民大哭于真源玄元皇帝祠,然后起兵对抗燕军,响应的有千余人。
这时候,玄宗任命吴王李祗为灵昌(今河南滑县东)太守,河南都知兵马使,统合河南兵马以抗击安禄山。单父尉贾贲、阆州刺史璇之子等人,带领官兵先到,称为吴王兵,对宋州展开反攻。张通晤败走襄邑,被顿丘令卢韺所杀。之后,贾贲领兵至雍丘与张巡会合,共有两千余兵。这时的雍丘县令令狐潮已经率全县投向燕军。燕军任令狐潮为军将,率兵向东驰援襄邑。令狐潮击败在襄邑的淮阳军,俘虏了百余官兵,并将他们囚禁在雍丘,准备杀害,然后又去见燕军大将李庭望。淮阳兵俘虏乘机杀掉守卫,雍丘城内顿时大乱。贾贲、张巡等得以乘乱攻入雍丘。令狐潮弃城逃跑。
肃宗至德元年二月,令狐潮又率领燕军一万五千意图夺回雍丘,而雍丘城内唐军总共不过三千余人。贾贲出战,因兵力悬殊,不敌,兵败而死。张巡驰骑决战,身上被创无数,但仍然力战退敌。退回城后,兵士们推张巡为主将,从此张巡兼领贾贲的部队,自称河南都知兵马使吴王李祗的先锋使。在张巡指挥下,击退燕军多次冲锋,累计杀伤近万人,而唐兵也死伤一千余人;面对唐军的抵抗,令狐潮不得已退兵。吴王李祗闻之,举荐张巡为委巡院经略。
同年三月,令狐潮会同燕军将领李怀仙、杨朝宗、谢元同等率兵四万余人蜂拥来到城下,企图一举攻下雍丘城。这时雍丘城内约有两千守军,而对手则有四万大军,城内军民大为恐惧。于是,张巡对众将士分析到:“敌知城中虚实,有轻我心。今出不意,可惊而溃也,乘之,势必折。”众将士听后,大为鼓舞。于是,张巡派一千人负责守城,亲自率一千人,分数个小队,突然从城中杀出。张巡身先士卒,直冲杀向燕军阵中。敌军虽众,但事出突然,惊惧无措,顿时大乱,燕军后撤。
次日,燕军再集结攻城,环城安置百门石炮(投石机)轰击,城楼及城上矮墙全被毁坏。张巡于城上立木栅,抵御燕军进攻。燕军纷纷缘城攀登,张巡用蒿草束灌上油脂,焚而投之,燕军士兵害怕被烧,不敢登城。张巡时而待燕军松懈之际,出城突袭;时而趁夜深人静之际,偷袭敌营。就这样,张巡身先士卒,带甲而食,裹伤战斗,坚守雍丘达六十多天,共经历大小数三百余战。令狐潮见在短期内不能取下雍丘,只好撤兵而去。张巡得知燕军要撤退,便率兵乘胜追击,果然大有所获,俘虏叛兵两千多,几乎活捉令狐潮。雍丘守军士气大振。
令狐潮因为撤退而失利,十分愤怒,于是回头再次围攻张巡。令狐潮本来与张巡是邻县县令,素来相熟。他知道强攻是不易取下雍丘的,便想诱降张巡。令狐潮在城下像平时见面那样和张巡互相问候,并成绩在城下劝降道:“天下事去矣,足下坚守危城,欲谁为乎?”张巡答曰:“足下平生以忠义自许,今日之举,忠义何在!”令狐潮听后,惭愧而走。
到五月,张巡与令狐潮已经攻守相持了四十余天。令狐潮因久攻不下,又添兵加将。这时候,长安已经失守,唐玄宗已逃往四川。由于雍丘与外界早巳失去了联系,张巡并不知道这些情况。令狐潮乘机送信招降张巡,说是大局已不可挽回,不如早降。
张巡接到信后,将情况告诉了众将官。有六名将官动摇了,要求率兵投降燕军。六人认为敌我兵力悬殊、形势不妙,既然皇上生死不明,不如早降。六人都官至开府、特进,在军中都有相当影响。六人要降,军心势必动摇。于是,张巡假装许诺,称明日再具体商议。第二天,张巡在堂上放置皇上的画像,率领将士朝拜,然后宣布六人的投敌计划。全军上下有感于国破家亡,遂群情悲愤,纷纷指责六人无耻行径。张巡把六人带到前面,责其不忠不义,扰乱军心,当即推出斩首。此举坚定了军心。
雍丘被围日久,城中粮食日渐缺乏。这时,恰好有数百艘为燕军补给的运粮船,刚停靠在河边,仍末卸粮。张巡从城上发现这个情况,便在夜间把军队集中到城的南面,装出好像要出战的样子。令狐潮见巡军集中到城南,也把军队调到城南来抵拒巡军。张巡知燕军完全调到城南后,便派遣勇士静静的到达河边,把燕军运粮船上的粮食夺走千多斛,然后放了一把火,把剩下的粮食通通烧光。
张巡智盗敌粮,令狐潮大怒,下令全力进攻。连日来,为了抵抗燕军进攻,雍丘守军很快就把准备的箭都射光了。在此危急之际,张巡在晚上,令士兵们把事先准备好的稻草人穿上黑衣,用绳子绑好,从城上慢慢放下。燕军隐隐约约看见有成百上千个穿着黑衣服的士兵,沿着绳索爬下墙来,报知令狐潮。令狐潮断定是张巡派兵偷袭,于是命士兵向城头放箭,射杀唐军。一时间,燕军兵士争相施射,一直放到天色发白。待到天色大亮,燕军这才发现城墙上所挂的全是草人。草人身上密密麻麻地插满了箭。白天一数,共得敌箭数十万只,这解决了军中缺箭的问题。
之后一连几天,还是像前次夜里一样,城墙上都出现了草人。令狐潮的兵士见状,都嘲笑张巡故伎重演,贪得无厌。于是只箭不发。逐渐,围城的燕军对张巡夜缒草人以为常,不再防备。
几天后,张巡挑选了五百勇士,并在夜里把他们放下城去。燕军士兵以为这次城上吊下来的仍是草人,没有防备。五百勇士乘敌毫不防备,突然杀向令狐潮的大营。燕军顿时大乱,自相冲撞践踏,不辨敌我。令狐潮下令集合人马,但仓皇之中,已不及组织抵抗,被唐军杀得四散走避。令狐潮纵马一直逃到十几里外,才稳住阵脚。
不久,令狐潮又纠合兵马,加紧围城。
期间一日,张巡让郎将雷万春在城头上与令狐潮对话,燕军乘机用弩机射雷万春,雷万春脸上被射中了六处,仍旧巍然挺立不动。令狐潮怀疑是木头人,就派兵去侦察,得知确实是雷万春,十分惊异,远远地对张巡说:“刚才看见雷将军,才知道您的军令是多么森严了,然而这对于天道又能怎样呢?”张巡回答说:“你人伦都不知,还有什么资格来谈论天道?”
这时,由于被围日久,雍丘城中木材已经用尽,水源也十分枯竭。于是,张巡故意装出弃城的样子,对令狐潮放话道:“我想率军弃城撤退,请你军队向后退出六十里,以便我逃逸。”令狐潮久攻不下,不知是计,便答应了。张巡见令狐潮军一退,便率领所有城中军队一起把城外三十里范围内的燕军营房完全拆掉,将木材带回城,以作为护城的工具。令狐潮大怒,立刻下令重新包围雍丘。
不久,张巡又向令狐潮传话:“如果你要得到这城,可以送马三十匹,我得到马之后,就要出奔了,到时你就可不血刃而得道雍丘”。令狐潮取城心切,照数送了三十匹马给张巡。张巡得到马后,挑选出三十位骁勇将士,将马分给他们,相约道:“燕军若来,每人杀一敌将。”第二天,潮率兵来到城下,责备张巡失约。张巡答道:“我想逃,但将士们不让我走,有什么没办法?”令狐潮知又中计,大怒,正想攻城。未等军阵排好,城内突然有三十骁骑率兵杀出。燕军因为军阵未成,一时大乱。三十铁骑率兵,左挑右杀,擒获十四名叛将,斩百余首级,还缴获不少兵械牛马。令狐潮退到陈留,一时不敢再攻雍丘。
令狐潮退兵后,张巡又探知有燕军步、骑兵七千余人进驻白沙涡,想切断雍丘后路。于是张巡在夜间率兵突袭,大败燕军。当张巡回军经过桃陵(今河南汜水县东南十里)时,又与四百余名燕军救兵相遇,全部将其俘虏,并把当中的胁从兵释放,令其各归其业。在这来回十日里,张巡威名远播,民众脱离燕军前来雍丘归附张巡的达一万余户。这时为止,张巡在雍丘被围已有四月,围城燕军常有几万人,而张巡仅有千余士兵,但每战皆捷。于是,河南节度使虢王李巨进驻彭城(今山东,济南),授张巡为先锋。
同月,令狐潮率领叛将瞿伯玉再次攻城。令狐潮先派四人,假装朝廷使者,说皇帝要诏见张巡,要求张巡前往。四人被张巡识破,经逼问招供后被杀。其余随从被压王吴王李祗处。不久,令狐潮撤退。
八月,燕军将领李庭望率领蕃汉兵二万余人向东袭击宁陵与襄邑,夜里在雍丘城外三十里处宿营。结果,遭到张巡率领的三千士兵,手持短兵器夜袭。燕军大败,死伤大半。李庭望只得收兵连夜而逃。
十月初四,令狐潮又与叛将王福德一同率领步、骑兵一万余人进攻雍丘。张巡再领兵迎击,大败燕军,杀敌千人。燕军败逃而去。
十一月初八,令狐潮率兵一万余人扎营于雍丘城北面,张巡领兵邀击,大败燕军,燕军逃走。