咸宁四年(278年)秋,兖豫诸州郡连降暴雨,西晋统治区域内大面积涝灾,晋武帝下诏求计。杜预曾前后两次上书陈述救灾计划。[62]这两篇收在《晋书·食货志》中的奏章是后人研究晋代社会经济状况的重要文献材料。由于杜预对当时灾情作过调查研究,所以他对灾情原因的分析和所提出的救灾办法,比较符合实际情况。他指出,粗放滥垦、火耕水耨和水利设施(陂堨)年久失修是造成灾难性后果的根本原因。“陂堨岁决,良田变生蒲苇,人居沮泽之际。水陆失宜,放牧绝种,树木立枯,皆陂之害也。陂多则土薄水浅,潦不下润。故每有水雨,辄复横流,延及陆田。”杜预认为解决的办法只能是坏陂宣泻。“以常理言之,无为多积无用之水,况于今者水涝瓮溢,大为灾害。臣以为与其失当,宁泻之不蓄。”那些建造比较合理的“汉氏旧陂旧堨及山谷私家小陂,皆当修缮以积水”。对“魏氏以来所造立及诸因雨决溢蒲苇、马肠陂之类,皆决沥之”。“宜大坏兖豫东界诸陂,随其所归而宣导之。”至于灾民,除靠政府救济官谷外,还可以让他们借助水产作眼下日给。坏陂的计划如果能实现,“水去之后,填淤之田,亩收数锺。至春大种五谷,五谷必丰,此又明年益也”。杜预还建议把典牧不供耕驾的种牛租借给灾民。在上书中,杜预对西晋政府的办事效率表示忧虑。他谴责某些部门、个别官吏只从自身利害出发,彼此纷争,互相推诿,使一些地区的救灾工作不能继续下去。
杜预在朝中七年,斟酌处理国家大事,不可胜数,受到朝野称美。时人称他为“杜武库”,意指其博学多通,就像武库一样,无所不有。
西晋建立时,全国尚未统一。当时孙吴政权仍控制着长江中下游以南的地区。不过,孙吴的国力比西晋要弱,再加上政局动荡,很难同西晋抗衡。司马炎登位以后一直想发动灭吴战争,但晋廷内部的意见并不一致。除羊祜、张华等少数大臣支持司马炎的想法外,大多数人态度暧昧。朝廷中的一些实力派人物,如贾充、荀勖等则持有不同见解,以致错过了一些灭掉孙吴的极好的战机。
咸宁四年(278年)春季,荆州前线的晋军主帅羊祜突然病重,一直优柔寡断的司马炎有些后悔,想让羊祜带病出征,但羊祜很快去世了。临终前,羊祜向司马炎举荐杜预接替自己,认为他完全可以担此重任。羊祜举荐杜预,一方面是因为在朝廷内部的争论中,杜预始终站在羊祜一边,积极支持灭吴战争;另一方则是因为杜预具有卓越的军事才能。杜预驻守的襄阳是西晋南部边境荆州的首府。当时,西晋和孙吴各有一个荆州,形成南北对峙的局面。战争一开始,杜预的首要任务是夺取孙吴的荆州。
十一月,司马炎改任杜预为镇南大将军。受命之后,杜预南下襄阳(今湖北襄阳),为即将开始的灭吴战争作战前准备。
杜预到达荆州后,积极进行军事部署,同时派兵奇袭西陵。西陵(今湖北宜昌东南)是孙吴的西部边镇,战略位置十分重要。只要晋军能突破西陵,益州的水师就可以顺流而下,驰骋荆州。对于西陵的重要性,孙吴也早有注意。孙吴大将陆逊曾指出,西陵是孙吴的西大门,丢掉西陵则整个荆州不保。所以,从陆逊到他的儿子陆抗,从没有放松过对西陵的控制。但杜预发现自陆抗死后,吴主孙皓逐渐削减了这里的兵力。只是驻守在这里的总督是孙吴的名将张政;不除张政,西陵很可能成为未来战争中晋军前进途中的巨大障碍。于是,杜预实施了一条借刀杀人之计。他从军队中挑选了一批精壮的将士,突然偷袭张政。张政虽然对杜预的到来有所警惕,但万万没有想到,他一到任就来偷袭,由于没有准备吃了败仗。张政害怕孙皓惩罚他,没有如实报告情况。杜预早了解孙皓生性多疑,对臣下不很信任,故意把在西陵抓到的俘虏送到孙吴的首都建邺(今南京)。孙皓果然中计,气急败坏地召回张政,任命武昌监刘宪接替他的职务。在大战之前,敌人将帅移易,军心动荡,这就为晋军的胜利创造了有利的条件。咸宁五年(279年)八月,杜预准备就绪后,上书司马炎请求开战
这时,驻守在扬州前线的晋军主帅王浑上表声称孙吴要发倾国之兵攻打晋朝。反对派乘机说三道四,使得司马炎对杜预的请战迟疑不决,最后竟同意将灭吴的计划推迟到下一年。
杜预得知司马炎变卦,非常着急。他再一次上书,陈述自己的见解。他说,孙吴的兵力相当紧张,只能集中力量保住夏口以东,连西线也无力增援。杜预婉转地批评司马炎听信谣言,放弃灭吴大计,实际上是纵敌养患,给敌人喘息的机会。他认为,灭吴战争胜券稳操,即使没有成功,也不会损失什么。对于杜预的上书,司马炎仍然迟迟不置可否。杜预又急又气,第三次上书请求立即开战。他愤怒地批评反对派既不顾国家利益,又怕别人立功的阴暗心理和可耻行径。杜预还向司马炎指出,由于我们要攻打孙吴的消息已经泄露,孙吴可能要采取对策,那必将给我们灭亡孙吴的战争带来许多新的困难。当杜预的这次上书被人送到司马炎那里的时候,大臣张华正在陪司马炎下棋。张华看到信后,立即推开棋盘,劝司马炎不要再优柔寡断了,恳求他采纳杜预的建议。这时候,贾充、荀勖等人又反对攻吴。由于杜预的几次上书,把攻打孙吴的形势剖析得一清二楚,司马炎终于下定决心,立即发兵南征
咸宁五年(279年)十一月,晋武帝调集大军二十多万,兵分六路,水陆齐进,大举进攻东吴。杜预在这次战争中并没有担任主帅,晋武帝只是任命他为西线指挥,具体任务是取江陵、占荆州,并且在荆州地区负责调遣益州刺史王濬的水师。