而安史之乱爆发后,叛军势力强大,一路势如破竹,途中的郡县望风而降。而此时,作为县令的张巡奉命跟随主将贾贲等一起守卫雍丘(今河南杞县),当时的雍丘只有唐军3000人,而此时叛军则有数万人。贾贲又很快战死,张巡成为雍丘的唯一守将。
面对叛军将领令狐潮率领的数万精兵,张巡硬是守了十个多月,创造了中国历史上守城战中的奇迹。张巡一战成名,成为守城将领中的典范。而让其名垂千古的一战,是在至德二年(757年)的睢阳守备战。睢阳当时是战略要地,是叛军进取中原的关键一战,因此,此战安庆绪(此时安禄山已死)派了尹子琦率十数万精兵合围睢阳,围得水泄不通,对睢阳势在必得。
而当时的睢阳城只不过是一座小城,户口只有4万,而守军只有数千人。奉命死守的是张巡和许远,张巡为主将,许远掌管粮草。其实在明眼人看来,睢阳肯定守不住,敌军十几万,而守军只有几千,差距几十倍悬殊。而且最重要的是,城中军心涣散,当时将领中有六人要求投降,在军械方面严重短缺,粮草更是接济不上。
在这样的情况下,睢阳城只需一个冲锋,基本上也就被攻破了。但是,面对强敌,张巡身先士卒,激励将士固守,接连打退叛军20多次冲锋,叛军被迫撤离。而到了当年七月,叛军再次大规模围城,此时城中已经没有粮食,士兵们只能靠树皮、纸张来充饥,守军更是只剩下1000多人,而朝廷却派不出一支援兵。
吃完树皮,士兵们只能张起罗网捕捉鸟雀、老鼠充饥,最后连士兵的盔甲皮革也都被吃光了。在这最后关头,无奈之下张巡只能决定吃人,并且亲自带头,将自己的妻妾杀了,分给士卒吃,许远也将其奴僮和妻妾家人杀掉。而将军们杀掉家人之后,开始吃伤残士卒,以至于到最后吃城中的百姓,为的只是坚守城池
可是即便如此,到了十月,活下来的守军都全部重伤,没办法守城,最终城破,张巡、许远等36名将领全部被俘虏。面对叛军的劝降,张巡大加痛斥,最后被残忍杀害,死时年仅49岁。而睢阳城中战前有户口4万,至城破仅剩400活人,其余的被吃光了。
安史之乱达到巅峰时,朝廷仅剩下长江、淮河流域的赋税支撑着。睢阳位于大运河的汴河河段中部,是江淮流域的重镇,如果失守,运河阻塞,后果不堪设想。睢阳坚守10月之久,在此其间朝廷由于不断地得到江淮财赋的接济,逐渐完成了恢复、准备到反攻的过程。此消彼长,安史之乱不能一鼓作气渐渐转入颓势,叛军再也无力南下。唐朝天下得以保全,全仗睢阳坚守10月之久。
张巡死后,唐代宗为张巡立庙纪念,此后历代都将其奉入名将祠,而且将其视为精忠报国的典范。