宋国和楚国在争夺霸主地位的斗争中矛盾越来越激烈。宋襄公自从在孟地被楚国军队活捉以后,一直非常不服气。他既痛恨楚成王不守信义,更加气愤其他诸侯小国见风使舵,背宋亲楚,他知道宋国的军力还不能和强大的楚国匹敌,就先把矛头指向了臣服于楚国的郑国。

公元前638年,宋襄公召集了卫,许、滕三国的军队联合攻打郑国,以显示自己的威风。郑文公听说宋师大举来攻,立即向楚国求救。楚成王迅速起兵伐宋救郑。宋襄公得知楚国大军攻向宋国,才感到事态十分严重,担心国内有失,只好急忙从郑国撤军回国。

这时,楚军还在陈国境内向宋国进发途中。宋襄公为了于边境地区阻击楚军,在泓水(今河南拓城西北)以北驻扎下来,等待楚军的到来。十一月,宋楚两国的军队在泓水展开了决战。战斗开始后,楚军呐喊着强渡泓水,向宋军冲杀过来。宋军先在泓水对岸排好了阵列,宋将公孙子鱼看到楚军还没有完全渡过河,一半在岸上,一半在河中,就劝宋襄公说:“敌人的军队比我们的人数多,我们应该趁他们只有一半人在岸上的时候打他们一个措手不及。 宋襄公却说:“我国的军队 是仁义之师,怎么能在敌军还没渡完河的时候就攻击他们呢?等到楚军过了河, 还没有排好阵列的时候,子鱼又说:“我们应该在他们还没有做好准备的时候予以迎头痛击。”宋襄公却说:“那怎么行,还是等他们列阵完毕再进攻吧。”楚军从容地列好队,布好阵,以排山倒海之势向宋军杀来,宋军士兵被楚军的威风和气势吓破了胆,没等短兵相接,就一个个掉头逃跑。楚军乘势追击,宋军丢盔卸甲,一溃千里,连宋襄公都被敌人一箭射中了大腿。

宋军打了败仗,宋国人都把这次失败归罪于宋襄公的迂腐和愚蠢,宋襄公不服气地说:“仁人君子作战,重在以德服人。敌人还没有排好队列的时候不能击鼓进攻,已经受伤的敌人我们也不能再次去打击他,而且不能把头发斑白的老人抓来作俘虏,这是众所周知的道理啊,我们虽然战败了,但是却保全了仁义之师的名声。”公孙子鱼叹了一口气,说:“我们打仗就是应该以获取胜利为最终目的,如果都像您说的那样,那我们还打仗干什么呢?

泓水之战规模虽然不是很大,但是它标志着从西周以来的“礼仪之兵”时代正在走向终结。