宋元公十一年,即公元前五二一年,十月,出逃吴国的华登引来吴国军队,帮助华氏。
当时齐国大夫乌枝鸣在宋国戍卫,宋国厨邑大夫濮对乌枝鸣说,《军志》上是这样说的,先发制人可以摧毁敌人的士气,后发制人就要等到敌人疲惫、士气衰竭。那么我们为什么不等到他们疲惫和混乱的时候再进攻呢?如果敌人进入宋国且军心安定,那么华氏的力量就更大了,我们就要后悔了。
乌枝鸣认为濮说的有道理,便听从了他的建议。
之后宋国军队与齐国军队在鸿口击败了吴国军队,还抓住了吴国的两个将领公子苦雂(qín)、偃师员。
但是华登率领着剩下的吴军却是击败宋国的军队。
宋元公想要逃亡,厨邑大夫濮对宋元公说,我只是小人,可以为君主赴死,却不能护送君主逃亡,还请君上等候一下。
于是,濮陪同着宋元公巡视军队,说,挥舞旗帜的,都是国君战士。
结果士卒听到了之后都是挥舞起了旗帜,宋元公在扬门上见到了这样的情景,就表示国家要亡、国君要死,这是各位的耻辱,怎么能是我一个人的过错呢?
乌枝鸣建议,只用少量的兵力不如一切去死,而一起去死的话不如撤去守备。敌人的武器很多,我们的人就都用剑吧。
宋元公听从了他的建议,华氏被击败逃走,宋国和齐国的军队就去追击。
濮将砍死敌人的头颅用裙子包裹起来,扛在肩膀上快跑,谎称杀死了华登,华氏在新里又被击败。
十一月,公子城带着晋国军队来到宋国,晋国荀吴、齐国苑何忌、卫国公子朝、曹国的翰胡一切救援宋国。
诸侯联军与华氏在赭(zhě)丘交战,公子城与华氏华豹在战场上相遇,公子城杀死了华豹、张匄、干犫(chōu),宋、齐联军将华氏击败,包围了南里。
华亥向华貙表示,我们就要成为晋国的栾氏了(晋国氏族,已被灭族)。
华貙便派华登到楚国去请求出兵,华貙带领着战车、步兵帮助华登突围,在睢水岸边吃完了饭,哭着送走了华登,就又冲进了包围之中。
楚国的薳越率领军队打算去迎接华氏,可太宰范劝谏楚平王,诸侯之中,只有宋国的臣子还在侍奉君主,可现在争夺国政,我们丢开国君却去帮助臣下,这恐怕是不妥的吧。
楚平王却表示,太宰犯说晚了,他已经答应了华氏。
宋元公十二年,即公元前五二零年,楚国的薳越派人告诉宋元公,我国国君听说宋国国君有不令之臣使国君忧虑,会成为宋国宗庙的耻辱,我国国君请求接受他们并加以诛戮。
宋元公表示,由于我的原因,使得楚君忧虑,承蒙楚君下令。宋国的君臣每日交战,如果楚君说,我要帮助臣下,我也只能听从。有句话是这样说的,只有动乱的门口是不应该经过的。楚君如果能够赐恩保护宋国,而不是去保护不忠人、奖励作乱的人,这是我的愿望,希望楚君能够考虑一下。
楚国人对此感到担心,而诸侯戍卫宋国的将领商议,认为不应该将华氏逼入死地,而不顺从楚国的话,对他们也颇为不利,而对宋国来说也算是除掉了他们的祸患。
于是,便请求宋元公将华氏送出,宋元公同意了。
二月,宋国的华亥、向宁、华定、华貙、华登、皇奄伤、省臧、士平逃亡到了楚国。
至此,华氏在宋国消失。
宋元公为了安定宋国,任命公孙忌为大司马,边卬(宋平公之孙)为大司徒,乐祁(乐喜之孙)为司城,仲几(仲江之孙)为左师,乐大心为右师,乐輓(wǎn)为大司寇。
宋元公十五年,即公元前五一七年,宋元公为了鲁昭公能够回到鲁国四处求情,但却死在了曲棘(今河南民权西北)。
宋元公去世之后,他的儿子太子栾继位,是为宋景公。