宋文公四年,六零七年,楚庄王因为宋国不朝贡楚国,派郑国攻打宋国,双方在双棘大战。
宋国主将华元在与郑国对决之前,将羊分给手下的将士,可惜却没有分给自己的车夫羊斟(zhēn),使得车夫在战斗开始之后,就把华元带到了郑国军营中。
结果,宋国军队大败,华元被俘,吕乐被杀。
这一年的夏天,因为郑国偏向于楚国,宋文公与晋、卫、陈三国讨伐郑国。
宋文公原本用一百辆战车,四百匹良马换回华元,可是这些东西还没有全部送到郑国,华元就自己逃回了宋国。
宋文公五年,即公元前六零六年,宋武公、宋穆公的后人借用曹国的军队攻打宋国。
同一年的秋天,为了报复曹国,宋文公派兵攻打曹国。
宋文公八年,即公元前六零三年,宋桓公与晋、卫、郑、曹在黑壤结盟。
晋国虽有衰落,但依旧是中原的强国。
宋文公十一年,即公元前六零零年,宋文公趁着滕国国丧包围了滕国。
次年,滕国因为依附于晋国便不侍奉宋国,宋国因此进攻滕国。
这一年,郑国因为与楚国讲和,因此惹得晋国不满,宋国与晋、卫、曹三国一起攻打郑国,郑国不得不再次向诸侯联军讲和。
宋文公十四年,即公元前五九七年,宋国、晋国、卫国、曹国在清丘(卫邑,今河南濮阳市东南)结盟,盟约‘衅病讨贰’,也就是周济落难之国,讨伐不臣之国。
但是就在同一年,陈国夏徵舒杀害了陈灵公,楚庄王率诸侯攻打陈国,宋国亦往,可卫国却去救援陈国,后来卫国大夫孔达因此自缢而死。
宋文公十五年,即公元前五九六年,楚国灭萧国,因为宋国曾救援萧国,楚国便出兵攻打宋国。
宋文公十六年,即公元前五九五年,楚国的使者经过宋国,因为宋国与楚国有仇,便把楚国使者抓了起来。
这一年的九月,楚庄王围攻宋国。
宋文公十七年,公元前五九四年,公元前五九四年楚国包围宋国五月不退,宋国国都已经没有粮食了,宋文公只能派乐婴齐到晋国去求援。
晋国国君晋景公本是打算救援宋国的,但是晋国大臣伯宗认为,鞭长不及,且楚国势强,楚庄王一代霸主,不可力敌也。
晋景公认同了他的建议,便没有派兵救援宋国,只是派了解扬到宋国,让宋国不让向楚国投降。
楚军围宋日久矣,楚庄王原本打算撤兵,但是大夫申犀、申叔劝楚庄王不要撤兵,相反要在宋国建房、种田。
宋文公因此感到害怕,派出了大将华元趁着夜色进入楚国军营见楚国大将子反,子反将这个情况告诉了楚庄王。
楚庄王问华元,宋都城内如何了?
华元是这样回答楚庄王的,析骨而炊,易子而食。
什么意思?
劈开人的骨头当柴烧,互相交换子女当做食物吃。
楚庄王又说了什么呢?
他感叹华元对他说了实话,其实楚军也只剩下两天的军粮了。
于是,楚庄王方才从宋国退兵。
宋文公二十二年,即公元前五八九年,宋文公去世,他的儿子公子瑕继位,是为宋共公。