215년 조조가 한중을 점령하여 익주의 유비가 위험해지자 제갈량은 계책을 내어 형주 동쪽 3군을 손권에게 내주고 손권과 조조를 싸우게 하는 계책을 편다.
손권은 조조가 여강 태수 주광을 시켜 합비로 가는 보급로인 환성에 주둔하자, 대군 10만을 이끌고 여몽과 감녕을 선봉으로 세우고 장흠과 반장을 후군으로 하며, 자신은 주태, 진무, 동습, 서성 등을 거느리고 중군을 이끌게 되었다.
손권은 오늘날 양쯔 강을 건너 화주를 점령한 후, 선봉장 여몽과 감녕을 시켜 환성을 함락시키고 여강 태수 주광을 죽인다. 손권은 손쉽게 환성에 입성하고 뒤따라 능통도 군사를 거느리고 온다.
이 소식은 합비를 수비하던 장료에게로 전해져 장료는 악진, 이전과 함께 환성을 되찾을 작전을 세운다. 세워둔 작전대로 악진이 군사들을 이끌고 오군의 선봉인 여몽과 감녕을 막는 동안 장료와 이전이 손권의 중군을 기습공격해 승리한데 이어 손권의 대군과 기세에 놀란 장료는 더 많은 군사를 필요로 하여 부하 설제를 보내 조조에게 도움을 청하고 조조는 유엽의 생각대로 한중을 하후연과 장합에게 맡기고 직접 본대 40만 명을 이끌고 합비로 가자 감녕은 기병 100기를 이끌고 조조의 영채를 기습공격한 익일 능통은 악진과 맞서 싸우면서 조휴의 활에 맞아 죽을 뻔하다가 감녕이 도와서 겨우 살아나자 조조는 전투가 오래끌자 모든 군대를 이끌고 대공세해 조조는 중로군을 거느리고 좌익 1로는 장료, 2로는 이전, 우익 1로는 서황, 2로는 방덕이 맡아 각기 1만 명의 군사를 주고 5로로 나누어 유수를 공격한다. 에디터의 주 - 이것은 전쟁에 들어가는 엄청난 재원 때문이다. 전쟁은 돈이 많이 든다 왜냐하면 병사 고용비, 무기 및 방어구 제작 밑 유지, 말과 말먹이, 군량, 기치와 군복 그리고 전쟁에 필요한 물품들을 최전선으로 이송하는데 드는 비용 때문이다. 더군다나 군사를 움직이려면 전장의 후방에 있는 보급기지에 보급물품을 지키고 나르며 보급물자를 최전방까지 호송할 군사 또한 따로 필요하다. 엄청난 금액이다. 이런 재정적 부담은 늘 백성들이 져야하는 부담이다. 따라서 조조는 되도록 전쟁을 빨리 끝내려한 것 같다.
유수를 공격당하자 손권의 부하 서성과 동습이 작은 배에 군사들을 태우고 싸우지만 동습은 도중 배가 뒤집혀져 죽고 진무도 서성을 도우러 오다가 방덕을 만나 싸우다 전사하고 만다. 서황이 이끄는 군대의 협공을 받고 위험해진 손권은 얼마 안되는 군사를 수습해 겨우 탈출하지만 이 과정에서 주태가 부상을 당했고 주태의 가상한 노력으로 서성을 구조한다.
조조의 군대는 손권의 군대를 겹겹히 포위해 대공격을 펼치치만 도중 손책의 사위 육손이 이끄는 군대가 합류하면서 크게 패하고 만다. 이후 손권은 유수에서 1달 이상 조조군과 대치했으나 이기지 못했고 결국 손권은 장소와 고옹의 의견을 받아들여 보즐을 보내 조조에게 화평을 청한다.
이에 손권은 군대를 철수시키고 손권의 군대 못지않은 피해를 입은 조조의 군대 역시 철수해 사실상 무승부로 끝난다. 이후 손권은 장흠과 주태에게 유수구를 지키게 하고 건업으로 돌아갔으며, 조조도 조인과 장료를 합비에 남아 지키게 하고 허창으로 돌아갔다.
현재 대한민국 표준국어대사전은 안후이성 허페이를 '합비'로 읽는 관용을 인정치 아니하고 있다.
인구 10명 당 병사 1명이 농경국가에서 동원가능한 병력의 최대치라 전제할 때, 인구가 50만도 되지 않는 동오에서 5만 이상의 병력을 동원하는 것은 불가능하다. 적벽대전 당시 동오의 병력이 3만이었던 것을 감안할 때 합비전투의 손권군 실제 병력은 약 2~3만 명으로 예상할 수 있다.