首先,当得知敌人的所在的时候,军队离开营垒。在接近敌人或者有遇到敌人袭击的危险的时候,从行军状态变换为作战状态——如果营垒离敌人很近,则一开始就列阵。在一般情况下,两军会大致相同时间发现对手,因此列阵时间大致也相当。所以古代作战的典型场面是两军面对面的对垒。在这种状态下,军队密度会很大,有的在一平方公里内会有10万名士兵。如果因为某种原因,一方没有及时列好阵型,就遭到了敌人的进攻,往往会造成非常严重的后果。但一般的情况是双方逐步逼近,然后射击兵发射武器,然后双方的肉搏战就开始了。在某些情况下(通常是一方急于求战)不经过射击战就进入了肉搏战。这种战斗模式一直保留到19世纪初。肉搏战直接决定着战斗的胜负。通常,训练和装备较好的军队会获胜。勇敢也是决定胜负重要的因素。一方突破敌方的阵型,切断其战阵之后,通常敌人的崩溃就开始了。因为这就意味着军队的一部分得不到指挥,作战力度大减,造成相邻的另一部分军队受到敌人更大的压力,如此累加,全军崩溃。古代军队战斗失败后,大多数的伤亡发生在崩溃和逃跑阶段。一般来说,胜者的伤亡要远远少于败者——尽管古代战争真正的伤亡很难确定。由于劳累,胜者往往不会穷追败者,即使追击,也往往针对敌方的指挥中枢。所以很少会发生“连一个人都没有剩下”的情况,即使是歼灭战也如此。
由于主要通过侦察兵了解敌情,传令兵传达命令,要及时掌握敌情,并及时下发命令非常困难。因此古代军队一般集合成巨大的队伍,战争一般通过大会战来决定胜负。下面是两次经典的战斗:
坎尼会战,前216年8月2日,在坎尼城外的平原上,罗马军8万步兵、6千骑兵和迦太基的4万步兵,1.4万骑兵作战。指挥者,罗马方面为保卢斯,迦太基方面为汉尼拔。罗马步兵在中央,骑兵分在两翼。步兵排成70列,分左、中、右三路,以重装步兵放在阵形中心,每列之间有一定距离。骑兵放在步兵的的左右两翼:右翼是罗马公民组成的少数骑兵,左翼为意大利联盟的骑兵。在左、中、右各保留一千骑兵作为预备队。罗马军队以中央战线为核心,军队密度较大,企图进行中央突破。迦太基军队中央战线为较弱的步兵,两翼为较强的步兵和骑兵。并保留三千名骑兵作为预备队。迦太基整个队形呈凸新月形。上午九时战斗开始。首先是射击兵的对射,很快开始肉搏。迦太基军中央向后退去,战线由凸新月形变成凹新月形。迦太基重骑兵很快击垮罗马骑兵,开始包抄罗马军两翼。汉尼拔并派出5百名轻步兵诈降。中午,战场刮起东南风,沙粒飞入罗马军士兵眼里,使他们的作战变得困难。那五百名诈降的军人开始大肆砍杀他们周围的罗马军,由于是在战线后方,罗马军队无法弄清实际情况,大起恐慌。此时迦太基重骑兵已经完成合围,由于战线中央的罗马军队密度很大,在被合围的情况下无法自如的行动,战斗持续到日落。据说有五万四千名罗马军战死,一万八千名被俘。迦太基死亡六千人。