楚庄王为了郑襄公要求讲和,才去请陈灵公来跟郑国一块儿订立盟约,没想到陈灵公给夏征舒杀了,他只好把三国订约的事搁下,先去平定陈国的内乱。赶到楚庄王收服了陈国,郑襄公又归附了晋国。这一来,差点把楚庄王气坏了。他恨郑国说了不算,打算再去征伐。令尹孙叔敖说:“咱们去打郑国,晋国一定去救;要征服郑国,必须打败晋国。因此,非发大军不可。”楚庄王就率领三军,在公元前597年(周定王10年,楚庄王17年,晋景公3年,郑襄公8年), 浩浩荡荡直向荥阳进发。
楚国的军队占领了郑国的四郊,把荥阳团团围住,日夜攻打。郑襄公一心依靠着晋国,眼巴巴地等着晋国的救兵。楚国人一连气打了十七天。郑国人死伤了不少,将士们咬着牙,守住城,时时刻刻盼着晋国人来救。他们的希望每天跟太阳一同升起来,又每天跟太阳一同落下去。末了荥阳东北角的城墙给楚国人打坏了一大段,一下子倒了好几丈。全城的老百姓一齐全哭了起来。那种大喊大叫发疯似的哭声把整个荥阳城变成了地狱。男女老少只是哭着、哭着。全城的人等着给人家屠杀,或者全掳了去做奴隶。楚庄王一听到全城的哭声,立刻下令退兵。公子婴齐拦住说:“咱们一连气攻打了半个多月,好容易打塌了一段城墙,就该冲进城去,怎么反倒退兵呐?”楚庄王说:“别这么说。郑国人已经知道咱们的厉害了。何必再用武力呐?我不愿意人家光知道咱们的厉害,咱们还得叫人家知道咱们的好心眼。”跟着,楚国的军队退去了十几里,让郑国人缓一口气。
楚庄王只知道好心眼就是好心眼,可不知道怎么样玩花样让人家都知道他的好心眼。比方说:齐桓公要帮助邢国和卫国,并不立刻就动手,他得等着那两国给北狄灭了以后,才向列国诸侯大声嚷嚷,去重新建造夷仪和楚丘,这么着,人家才知道他的好心眼。晋文公要收服原城,他先下命令:三天之内攻不下来,他就不要原城了,大家伙儿嚷嚷出去,人家才把他追回去。宋襄公要用仁义去抵抗武力,他必得做了一面大旗,把“仁义”两个字打出来,人家才能够瞧出他的好心眼。楚庄王对这一手可玩不出来。他下令退兵,谁也不知道这是他的好心眼,这不是白饶吗?郑襄公和那些个等着挨杀的郑国人,一瞧楚国退了兵,不说楚国人让他们缓口气,反说是因为晋国的人马到了。大家伙儿精神百倍地先把城墙修好,等着晋国人替他们去打胜仗。楚庄王这才知道郑国并没有归附的意思,就又把荥阳城包围起来。郑国人一连气守了三个多月,还瞧不见晋国的人马。大家伙儿这才觉得不对头。楚国的大将乐伯率领着勇士上了城墙,杀散了守兵。另外一部分将士冲到城下,劈开城门。楚国的大队人马进了荥阳城。
楚庄王下令,不许杀害老百姓,不许抢掠财物。楚国的大军又整齐又严肃地到了大街上。迎面来了郑襄公。他打扮成罪犯的样子,披着头发,露着上身[文言叫“肉袒”],手里牵着一只羊,恭恭敬敬地来迎接楚国的军队。他跪在楚庄王面前,说:“我没有好好地伺候贵国,叫大王生气,这全是我一个人的不是。现在敝国的存亡全在大王手里。要是大王看着过去的交情,还让敝国做个属国,永远伺候贵国,这就是您的大恩大德了。”一边说着,一边直流眼泪。公子婴齐恐怕楚庄王耳软心活,就提醒他,说:“郑国直到打得顶不住了才投降。这种投降决不是出于真心。大王今天要是饶了他,让他归附,明天晋国人一到,得!他又背叛起来,那多麻烦哪!不如干脆把郑国灭了,省得以后再麻烦。”楚庄王可比公子婴齐精明得多了。他知道一时不能把郑国灭了,落得答应郑襄公把郑国收为属国。他就故意摆出大大方方的神气,说:“要是申叔时在这儿,他又该说我在庄稼地里夺牛了。”
楚庄王立刻下令退兵三十里。郑襄公带着几个大臣到楚国兵营里再要求楚庄王让郑国归附。楚庄王同他们订了盟约以后,带着大军回去了。
楚国的军队走了一程子,忽然来了个消息,说,晋国拜荀林父为大将,先垮[hu二声;先轸的儿子]为副将,率领六百辆兵车,已经到了黄河边上,前来搭救郑国。楚庄王叫军队安营下寨,要瞧瞧晋国人到底要怎么干。