泰始六年(270)六月,晉武帝派杜預協助安古將軍石鑒去隴西抗擊鮮卑族樹機能的進攻。軍隊開進到塞外,石鑒在沒有察明敵軍虛實的情況下,想貿然發起進攻。杜預看到敵人兵強馬壯,準備十分充分,而自己來時僅帶了步兵300人、騎兵100人,即使加上西域的兵馬,也絲毫不占優勢;而且晉軍是遠離後方作戰,糧食匱乏,補給困難,又是孤軍深入,人馬疲乏,如果開戰很難取勝。杜預於是建議暫緩進攻,抓緊時間增加兵力,籌措運糧,等等到春天糧草齊備,兵力充實之後再展開戰鬥,並提出了五條不可以出擊、四條不必出擊的理由。但石鑒對杜預不聽自己命令的行為十分惱怒,不僅沒有采納,而且還上奏皇帝,說杜預來到邊境以後擅自修飾城門和自己的官邸,克扣地方官員征集上來的軍用物資,造成軍需匱乏,且消極作戰,貽誤戰機。接著石鑒派人用囚車將杜預押往廷尉處受審。由於杜預與司馬炎是親戚關係,並且平時業績突出,僅被削去了爵位。但不久,石鑒出擊失敗,證實了杜預主張的正確,杜預的罪名也就不成立了。後來匈奴劉猛起兵反對西晉,皇帝下詔命杜預以散侯身份在宮中製定計劃。不久官拜為度支尚書,提出了50多條對內有利於國家、對外有利於安定邊境的建議,都被采納。石鑒從前線回來,論功行賞不符合實際情況,杜預給予揭發,兩人的矛盾激化,互相指責爭吵,結果同時被免去了官職,杜預僅留了侯爵的職位。幾年後,他又重新就任度支尚書。
都督荊州伐吳建功
鹹寧四年(287),西晉主張伐吳並一直積極備戰的大將羊祜病亡,臨死極力推薦杜預代替他的位置。於是,杜預被任命為鎮南大將軍,都督荊州諸軍事。
杜預出鎮荊州以後,便繼承了羊祜的遺誌,積極籌措伐吳,使物資和兵力都比較充裕。而此時的東吳政治腐敗,國力日衰,將士離心,民怨沸騰,邊防鬆弛。當時,吳主孫皓在戰略上重下遊、輕上遊,加上東吳兵力有限,吳國在西起建平、東至夏口(今湖北武漢市)的沿江重鎮,都沒有形成統一嚴格的防禦態勢。鹹寧四年(287)十一月,杜預派出精銳之師襲擊瀕臨長江、出入三峽的戰略要地西陵。東吳在西陵的守將張政疏於戒備,布防混亂,在杜預的突然攻擊下西陵失守,損失慘重,許多士兵被晉軍俘獲。張政懾於孫皓的暴虐,隱瞞失敗真情,不敢上報。杜預得悉這一消息後,以送還吳軍俘虜為名,寫了一封揭露吳軍慘敗實情的書信送給孫皓。孫皓接到杜預的書信,果然大怒,立即調回張政問罪。同時,改派駐武昌的監軍劉憲,率領張政所屬部隊接替西陵防務。吳國在麵臨晉朝大軍來攻之際,更換第一線統帥,削弱了防衛力量,使軍隊動蕩不安,形勢十分有利於晉軍。
杜預做好準備工作後,就向朝廷請示何日伐吳。武帝說第二年才能大舉伐吳。杜預上表陳說利害,認為當下正是伐吳的大好時機。過了十幾天,杜預又上表文,杜預表章送到朝廷時,武帝正與張華下棋。張華也是一向主張伐吳,借此機會對武帝進行一番吹捧和遊說,使武帝同意了這一計劃。
鹹寧五年(279)十一月,晉武帝發兵20萬,以賈充為大都督,分水陸六路伐吳。杜預率其中一路,自襄陽南下江陵。
太康元年(280),在晉軍的猛烈進攻下,江城被攻破。長江上遊一經平定,沅江、湘江以南,直到交州、廣州,吳國的州郡紛紛歸降。接著,杜預在武昌會集各路晉軍,商議如何進攻吳國都城建康。有人提出,東吳已建國百年,根基深厚,不易拔除;如今臨近暑季,雨水正多,疾病將起,應該等到來冬,再發起大規模進攻。杜預則認為緩兵勢必功虧一簣,指出攻打東吳已經形成破竹之勢,應該乘勝進擊,不能給敵人以喘息之機。於是,在他的運籌指揮下,各路大軍直指秣陵,所過城邑望風而降。使得主張來冬再進軍的人佩服不已。掃平吳國,凱旋回師。杜預因功晉爵為當陽縣侯,封邑增加到9600戶,他的兒子杜耽也被封為亭侯。