建安二十年(215)八月,曹操西征漢中還沒回來,位於吳魏邊境的軍事重鎮合肥城內隻剩下張遼、李典、樂進和薛悌四個守將以及他們手下的七千多個士兵。吳主孫權算準曹軍主力這個時候已經深入漢中,不可能抽兵回來援救,便糾集了十萬精兵,揮師北上,攻打合肥。
其實,曹操早在出征之前,就已經料到孫權有可能會趁虛而入進犯合肥。於是,他預先寫了一道密令,封在木匣子裏麵交給護軍薛悌,吩咐他說:“如果吳賊到了,你就打開匣子,按照裏麵的命令行事。”如今孫權果真前來進犯,薛悌和其他三位將軍便打開木匣子,拿出密令,隻見上麵寫著:“請張遼、李典兩位將軍出城應戰,樂將軍駐守城池,薛護軍一定不要參與戰事。”原來在曹操心裏,張遼、李典是驍勇善戰的猛將,因此派他們出戰;樂進處事穩重,因此派他守城;護軍薛悌是一個文官,因此不要他參戰。
可是,孫權這次率領那麼多兵士前來,雙方兵力懸殊,即使四個將軍全部出動也未必能夠戰勝,要是真的按照曹操的安排去做,那完全就是雞蛋碰石頭,自取滅亡啊!四個將軍看完密令,都疑慮重重,不敢領命。樂進說:“就這麼貿然出兵,一定凶多吉少。趁著城中的糧草還夠堅持一段時間,我們還是等援軍來了再出城應戰吧!”李典也說:“樂將軍說得對,以我軍現在的情況,確實不適合……”可李典的話還沒說完,張遼怒目圓睜,拍案而起,說:“曹公遠征在外,如果這個時候掉頭來救,征西大計豈不是功虧一簣了?而且即便有兵來援,以吳軍十萬兵力,我們又哪裏撐得到援軍趕來?要想保住合肥城,就得現在趁吳軍還沒穩定下來,主動出擊,狠狠地挫一下他們的銳氣。躲在城裏麵不出去,算什麼英雄好漢!到時候丟了合肥,曹公回來,怎麼向他交代?”樂進向來保守,聽了張遼的話,仍然是吞吞吐吐,猶豫不決。張遼沒了耐心,生氣地說:“是輸是贏,就在這一戰了,如果你們還要怕這怕那的,那我張遼就獨自帶兵打去!”李典平日裏跟張遼關係並不好,但這次看到張遼那麼堅決,也很受鼓舞,他大義凜然地對張遼說:“這是國家大事,既然張將軍你已經拿定了主意,如此奮不顧身,那我們怎麼能為了一己安穩而舍棄家國大義呢?我跟你一起去!”樂進和薛悌也不好再說什麼,都點頭同意了。於是,他們根據張遼的建議,連夜征募了八百個不怕死的勇士,準備同吳軍決一死戰。當天夜裏,合肥城內大宴兵士,嘹亮的軍歌久久在夜空中回旋。
第二天一大早,魏軍就出了城。張遼披甲執戟,大呼一聲“張遼在此”,就衝入了敵陣,吳軍毫無準備,驚得手忙腳亂。隻見張遼目光如火,長戟一揮,接連刺翻了好幾十個人。他快馬直入,逼到孫權的帳前,兩員東吳大將剛要拔劍抵抗,已被張遼挑破了喉嚨。孫權嚇得慌忙竄上一個大土堆,一麵持戟自衛,一麵呼喚士兵,將勢單力薄的張遼層層圍住。張遼冷笑一聲,毫無懼色,帶領身邊的死士左衝右突,不一會兒就殺出了重圍。這時,負責接應的李典也率兵前來,雙方一直打到中午,吳軍傷亡慘重,士氣大減。張遼見初戰告捷,目的已經達到,便率兵回城。