公元409年,刘裕执掌了东晋大权,率领力排众议,主张大军北伐南燕,收复失地。四月,刘裕统率10万大军水陆两路齐头并进,从建康沿淮河进泗水,经过一个月的行军抵达江苏下邳(今江苏睢宁西北),把船只,辎重等留在下邳,全军轻装由陆路强行军到山东琅琊(今山东临沂)。为了防止被南燕军队抄了自己的后路,刘裕采用稳扎稳打,步步为营的战略,每到一紧要处就修筑堡垒,派人防守。
南燕皇帝慕容超依仗鲜卑骑兵所向披靡,决定放刘裕深入腹地,然后在平原上用骑兵痛击晋军。南燕大将公孙五楼主张坚守大砚山(今山东临朐县东南),拒敌于险关之外,然后坚壁清野,让远征的晋军耗完粮草再对他们腹背夹击。大砚山地势险要,本是南燕的一道天然屏障,如果据险而守,把住南大门,晋师北进决非易事。慕容超自恃骑兵厉害,没有采纳公孙五楼的意见。太尉慕容镇也劝谏说,即使不坚壁清野,也该守住险隘,阻绝晋军深入才是。慕容超还是不听。
慕容超放开大砚山,晋军不费吹灰之力就通过险隘,然后直抵临朐。六月,晋军与南燕主力在临朐南展开决战。南燕骑兵最厉害的就在万马奔腾结阵突击那一时,一般的步兵方阵根本挡不住这雷霆万钧的猛烈冲击,只要步兵阵形一被冲散,必败无疑。为了让以步兵为主要战力的晋军阵形不被冲散,刘裕使用了战车。刘裕把4000辆战车分列在全军的两翼,像铜墙铁壁那么两座,紧紧围护着中间的步兵,骑兵则断后协防,全军结成了一个超级大阵,远有强弩,近有长矛,协同作战。南燕骑兵多次冲上去,均被晋军车阵挡住,形成不了集团冲击力,优势顿时丧失。刘裕在相持之际,暗中命令部将率偏师偷袭南燕军的后方据点临朐。临朐城非常空虚,被晋军分遣队顺利攻克。慕容超一听后方失守,慌忙撤军。刘裕乘机反攻,慕容超被打了个七零八落,手下十余名将领战死,连他自己的宝马、玉玺、车仗都被晋军缴获,好不容易才逃回都城广固。
刘裕乘胜追击,一鼓作气夺下了广固的外城,南燕军退守内城死守,晋军一时攻不下来。慕容超一看自己的国土内是不会有人来勤王救他了,只好向邻国后秦求援。南燕先后向后秦派了三批使者,但后秦实在无力去救,返回的使者反被晋军抓住。刘裕让被抓的使者沿着广固城巡绕一圈,以示援军绝望。守城的南燕军士气逐渐崩溃,不断有官员出降,只有慕容超仍坚持抵抗。刘裕起用南燕的降官张纲造了很多攻城器械,向广固发动总攻,南燕将领开城投降。慕容超突围失败,被晋军抓住送到刘裕那里。刘裕斩杀慕容超,南燕至此灭亡。