由于被围日久,雍丘城中木材已经用尽,水源也十分枯竭,张巡故意装出弃城的样子,对令狐潮放话道:“我想率军弃城撤退,请你军队向后退出六十里,以便我逃逸。”令狐潮久攻不下,不知是计,便答应了。张巡见令狐潮军一退,便率领所有城中军队一起把城外三十里范围内的燕军营房完全拆掉,将木材带回城,以作为护城的工具,令狐潮大怒,立刻下令重新包围雍丘。
不久,张巡又向令狐潮传话:“如果你要得到这城,可以送马三十匹,我得到马之后,就要出奔了,到时你就可不血刃而得道雍丘。“令狐潮取城心切,照数送了三十匹马给张巡。张巡得到马后,挑选出三十位骁勇将士,将马分给他们,相约道:“燕军若来,每人杀一敌将。”第二天,潮率兵来到城下,责备张巡失约。张巡答道:“我想逃,但将士们不让我走,有什么没办法?”令狐潮知又中计,大怒,正想攻城,未等军阵排好,城内突然有三十骁骑率兵杀出,燕军因为军阵未成,一时大乱。三十铁骑率兵,左挑右杀,擒获十四名叛将,斩百余首级,还缴获不少兵械牛马,令狐潮退到陈留,一时不敢再攻雍丘。
令狐潮退兵后,张巡又探知有燕军步、骑兵七千余人进驻白沙涡,想切断雍丘后路,于是张巡在夜间率兵突袭,大败燕军。当张巡回军经过桃陵时,又与四百余名燕军救兵相遇,全部将其俘虏,并把当中的胁从兵释放,令其各归其业。在这来回十日里,张巡威名远播,民众脱离燕军前来雍丘归附张巡的达一万余户,这时为止,张巡在雍丘被围已有四月,围城燕军常有几万人,而张巡仅有千余士兵,但每战皆捷。于是,河南节度使虢王李巨进驻彭城,授张巡为先锋。
令狐潮率领叛将瞿伯玉再次攻城,令狐潮先派四人,假装朝廷使者,说皇帝要诏见张巡,要求张巡前往,四人被张巡识破,经逼问招供后被杀,其余随从被压往吴王李祗处,不久,令狐潮撤退。燕军将领李庭望率领蕃汉兵二万余人向东袭击宁陵与襄邑,夜里在雍丘城外三十里处宿营。结果,遭到张巡率领的三千士兵,手持短兵器夜袭,燕军大败,死伤大半,李庭望只得收兵连夜而逃。令狐潮又与叛将王福德一同率领步、骑兵一万余人进攻雍丘,张巡再领兵迎击,大败燕军,杀敌千人,燕军败逃而去。令狐潮率兵一万余人扎营于雍丘城北面,张巡领兵邀击,大败燕军,燕军逃走。
到了十二月,由于数月来令狐潮、李庭望对雍丘屡攻不下,燕军遂在雍丘北面的杞州,构筑杞州城以断张巡的粮食补给。此月,鲁郡、东平相继被燕军攻陷,济阴郡太守又高承义献郡投降燕军,虢王李巨便守彭城,领兵退守临淮。叛将杨朝宗率步、骑兵二万意图攻取宁陵,以断张巡后路。于是,张巡主动放弃雍丘,率马三百匹、将士三千余人移师向东,坚守宁陵,始与睢阳太守许远、城父令姚訚等在宁陵合兵。
当日,杨朝宗率兵进至宁陵城西北后,张巡、许远派部将雷万春、南霁云领兵迎战,经过一昼夜激烈厮杀,大破杨朝宗部,杀叛将二十员,斩首万余级,死尸塞满汴水,顷流而下。杨朝宗收集残部,连夜逃去。因战功显赫,唐肃宗下敕书任命张巡为河南节度副使。张巡为有功的部下们请功,派遣使者向虢王李巨请求给予委任状以及赏赐物品,而虢王李巨只给了折冲都尉与果毅都尉的委任状三十通,没有给予赏赐的物品。张巡就写信责备李巨:“宗社尚危,围陵孤外,渠可吝赏与赀?”李巨竟一直不予以理睬。
睢阳地当睢阳渠要冲,位置非常重要,安禄山死后,其子安庆绪派部将尹子琦率同罗、突厥、奚等部族精锐兵力与杨朝宗合,共十几万人,进攻睢阳。面对强敌,张巡、许远激励将士固守,从早至午,接战二十余次,士气不衰。许远自以才能不及张巡,推张巡为主帅,而自己管筹集军粮和战争物资,张巡任主帅后首先清除了内部叛将田秀荣,然后率军出城主动袭击叛军,将叛军打得大败而逃,并缴获了大批车马牛羊。张巡把这些战利品都分给了将士,自己分毫不要,这次大捷之后,朝廷拜张巡为御史中丞,许远为待御史,姚訚为吏部郎中。
到了五月,正是麦熟时节,叛军在城外收麦以充军粮,张巡在城上看到后,集结士兵,擂鼓作出欲战的样子,叛军见状立刻停止收麦待战。这时,张巡止住擂鼓,让军士作出休息的样子,叛军见状放松了警惕,张巡抓住时机命南霁云率军大开城门突然冲出,直捣尹子琦大营,斩将拔旗。与此同时,有叛军大将率一千余骑兵直逼城下招张巡投降,张巡在城上一边与敌将答话,一边暗命勇士几十人手持钩、陌刀、强弩从城上吊下潜入无水的护城壕中,趁城外叛军依仗人多势众并不戒备时,勇士们奋勇杀出,叛军猝不及防损伤了很多人马。
到了七月,叛军再次围城,这时士兵每日才能分到一勺米,饥了只好吃树皮和纸,守军也只剩千余人,瘦弱得拉不开弓,而且外无救兵。叛军了解情况后决定强攻睢阳,他们先用云梯爬城,张巡命士兵用钩杆将云梯顶翻,随即又从城上投火焚烧云梯,这样,叛军用云梯攻城就失败了。之后,叛军作了一番整顿,又用钩车、木马攻城,但当他们靠近城墙时,又被城上投下的石块砸得七零八落。叛军见状停止攻城,又围城挖壕,壕外再加筑栅栏,以作长期围困。这时城中守军很多因饥饿而死去,留存又大多伤残疲惫不堪。这时,张巡杀其爱妾,煮熟犒赏将士,许远也系其奴僮给士兵吃,城中的麻雀老鼠及铠甲弓箭上的皮子都找来吃了,但就在这样的情况下,张巡还对接近城墙的叛军将领晓以忠义,劝其反正,而被张巡策反的李怀忠等许多人,都能死心塌地的帮助张巡守城。
御史大夫贺兰进明接替李巨任节度使,驻军临淮,许叔冀、尚衡驻军彭城,他们都持观望态度,不肯救睢阳之围。张巡命南霁云到许叔冀处求援,许叔冀不同意,只送布数千匹,南霁云在马上谩骂,要求拼死决斗,许叔冀不敢回答。张巡又派南霁云至临淮告急,率精锐骑兵三十人突围出城,叛军上万人阻挡,南霁云左右开弓,叛军都溃败下去,南霁云见到贺兰进明,贺兰进明说:“睢阳存亡之事已定,出兵又有什么用处呢?”南霁云说:“城也许尚未陷落,如已失守,我就以死向您谢罪。”
贺兰进明担忧出兵后会被许叔冀袭击,又妒忌张巡的声名威望,本就没有出兵的意思。他又喜爱南霁云这位壮士,想留下他。大设酒宴招待,音乐声起,南霁云哭着说:“昨天冲出睢阳时,将士已整月吃不到粮食了。现在您不出兵,而设宴奏乐,从大义上讲我不忍心独自享受,虽然吃了,也咽不下去。现在主将交给我的任务没完成,我请求留下一个指头已示信用,回去向中丞报告吧。”说罢就拔佩刀砍断一根手指,满座都大惊,为之流泪。南霁云最后不吃离开。抽箭回头射佛寺的宝塔,箭射进砖中,说:“我破灭叛贼回来,定要消灭贺兰进明,这支箭就是我誓言的标志!”
南霁云到了真源,李贲送马百匹;在宁陵宿营时,得到城使廉坦的三千军队,乘夜突围入城。叛军发觉,加以阻挡,南霁云边战边进,士兵大多战死,到达睢阳的才一千人。正遇大雾,张巡听到战斗的声音,说:“这是南霁云他们的声音。”便打开城门,南霁云赶着从叛军手里抢夺的几百头牛入城,将士们都执手哭泣。叛军知睢阳已无外援,围攻更急,众人议论向东转移,张巡、许远认为睢阳是江、淮屏障,如果放弃,叛军就会乘胜鼓噪南窜,江、淮必亡。而且带领饥饿士兵行军,必然到不了目的地。
十月初九,叛军攻城,将士因伤病无法作战,张巡向西叩拜说:“孤城防卫之计已穷尽,不能保全了,臣活着不能报告陛下,死也一定变成鬼来杀贼。”睢阳城陷后,张巡与许远一起被俘,睢阳将士见到张巡后,起立哭泣,张巡说:“大家镇静,不要怕,死是命中注定的。”众人都因悲伤而无法仰面正视他,尹子琦对张巡说:“听说您督战时,大声呼喊,往往眼眶破裂血流满面,牙也咬碎,何至于这样呢?”张巡答道:“我要用正气消灭逆贼,只是力不从心而已。”尹子琦发怒,用刀撬开他的嘴,发现只剩三、四颗牙齿。张巡骂着说:“我为君父而死,你投靠叛贼,乃是猪狗,怎能长久!”
尹子琦佩服他的气节,想要释放他,有人说:“他是谨守节义的人,怎肯为我所用?而且他得军心,不可留。”尹子琦于是以刀胁迫张巡投降,张巡不屈服,尹子琦又逼南霁云投降,南霁云未应声。张巡呼叫:“南八,男儿一死而已,不能向不义的人投降!”南霁云笑着说:“想有所作为啊,您是了解我的,怎么敢不死!”也不肯投降,张巡于是与姚门言、雷万春等三十六人一同遇害,终年四十九岁,唐肃宗后追赠张巡为扬州大都督、邓国公,并授其子官职。