大體上粉碎了敵人的野戰軍之後,就可以進行攻城戰了。攻城戰的戰法,在軍隊不擁有有效的攻城武器的情況下,一般是用多架雲梯強行登城;或者衝撞城門;或者在敵城下強行構築土堆,直到土堆跟城齊平,然後士兵蜂擁登城。這些是《孫子兵法》上講述的攻城法。這些攻城法效率很低,而且士兵傷亡大。
如果擁有完善的攻城武器,那麼攻城戰將是對守城部隊巨大的考驗。一般的攻城武器有如下幾類:
衝車:最簡單的是在車上設置吊架,吊著一根首部包鐵或銅的木頭,以士兵來回推動,衝撞敵城城門或城牆。比較完善的形式是在車上設置人字形屋頂,防止上方矢石的撞擊。
攻城塔:在前麵有吊梯,可以回避較窄的護城河,直接讓士兵登城。馬其頓曾經製造過50米高的攻城塔。
拋石機:最早出現於亞述軍隊中,其作用原理,有西方式的利用毛發絞力或者利用重物的杠杆式拋石機,以及中國式的多人拽拉式杠杆式拋石機。就性能而論,當以重物杠杆式為最好。所以元朝引入了這種拋石機,稱為回回炮。
弩炮:有的弩炮跟拋石機有類似之處。既可以發射矛箭,也可以發射石塊。
以上就是一般的攻城武器,比較少見的還有亞述的夾鉗,據說這種東西可以夾出城牆的石塊;還有馬其頓的撬棍吊箱,其樣式是在一個三角架上設置一根杠杆,杠杆一頭有大無蓋箱子,盛放士兵。另一端由多人拉拽,使杠杆移動,箱子就可以被吊到敵城牆上。這種武器僅馬其頓裝備過,可見它並不可靠。
守城武器除了一般的矢石、燃燒罐外,拋石機和弩炮也可以運用。著名的阿基米德同樣設計了夾鉗,據說曾經把羅馬戰艦夾出水麵再讓它落下,使之沉沒。
在裝備了完善的攻城武器以後,攻城戰就再也不是令攻方統帥害怕得要死的不得已的戰法了。相反的,對於守方來說,城市也再不是安全的了。在這種情況下,一般的攻城流程,以羅馬軍隊為例如下:
圍困戰:首先逼近敵城,然後挖掘環繞整個城市的壕溝工事體係。以斷絕敵城與外界的聯係。這種體係包括壕溝、護堤和高塔,以及護堤上的弩炮。為防止敵人使用燃燒兵器焚燒土木工事,高塔跟敵城的城牆往往保持一定距離。一般這樣的工事體係要修建內外兩重,內層麵對城內敵軍,外層麵對敵援軍可能來襲的方向。軍隊在工事內駐紮,防止敵軍突圍,如敵援軍趕到,則與之戰鬥。經過長期圍困,迫使敵人投降或攻入城內。
攻城戰:如果認為敵人的防守能力不強,或者需要趕快攻破城市,則強行攻城。這時,大量工兵挖掘伸向敵城的壕溝,工兵在護城河上遊切斷水源,使護城河幹涸。在填平若幹段護城河之後。攻城塔前進到敵城牆下;或者挖掘地道,伸展到敵城牆下,使敵城牆坍塌;或者用衝車撞擊城牆或城門。在進行這種迫近作戰時,由大量拋石機和弩炮提供掩護。也可以單純依靠拋石機集中投擲石塊,損壞敵方一段城牆後,士兵蜂擁登城。
在此過程中,守城方也會極力破壞攻城方的攻城器械,由於攻城器械主要為木製,所以經常大量使用燃燒罐,為了不使敵方攻城武器發揮效用,常常出城門突擊攻城軍,對於迫近的工程機械和地道,守方可以使用地道來陷沒、破壞之。在耶路撒冷守城戰中,以色列人就幹得不錯。
在特殊情況下,使用雲梯強行攻城,也是一種戰法。在印度亞曆山大大帝就曾經使用這種戰法,從而孤身處於險境中。
從羅馬時代的攻城戰情況來看,攻城戰對攻方是非常有利的。僅從這個事實就可以看出:任何一座進行圍攻的城市,羅馬軍隊都攻破了。而且在大多數情況下,攻方的傷亡要小於守方。羅馬攻城戰的情況,可以看攻迦太基、耶路撒冷、紐曼細阿三城的戰況。前兩個是大城市,後一個是小城市,三城的防禦戰都打得非常悲壯,就攻防過程來說,也是十分典型的。