右副将邹元标建议,先回师打通补给线,然后再进攻开罗。吴元济认为,目前第五路军弹药充足,主要是缺水,也缺一些粮食,此处已经距离尼罗河不远,干脆进发到尼罗河岸边,就地取水取粮。
第五路军顶着干渴,一路进发到开罗以南的尼罗河岸边,终于在那里痛饮一顿。吴元济仗着第五路军的战力,首先拿下开罗以南的小城阿玛拉,在那里夺取一些粮食,供应部队的军需。有了水,有了粮,第五路军迅速恢复元气,开始准备攻打开罗。
吴元济和几个部将商量以后认为,开罗城市较大,而且西临尼罗河,很难将其彻底包围,不如打一场击溃战,先占领城市再说。吴元济派左副将郁景斌带领3个羌戎团在城东围堵,派右副将邹元标带剩下3个羌戎团在开罗东北方向埋伏,自己则带领镇东军陆军主力在城南主攻。
吴元济认为,开罗的大食军被击溃后,有两个方式逃跑,一种是乘船从尼罗河逃跑,这个唐军没办法;一种是从城北的陆路逃跑,到时可以由邹元标率军截击一番。
开罗城市虽然大,但是城墙都是泥砖所筑,坚固性不够,而且没有护城河,防御水平一般。第五路军准备就绪以后,就在城南开始炮击,只炮击了一天,就在城南轰塌了一大段城墙。
当夜,唐军先就地宿营,准备第二天发起进攻,优素福仍不甘心失败,派出骑兵过来劫营。唐军都是身经百战,对这种套路遇的多了,早就提前派人警戒,发现有人来袭后,立即进行反击,将夜袭的大食军击退。
次日,唐军炮兵又轰击了一阵,将缺口内的障碍物全部扫平,然后唐军步兵正式发起进攻。优素福的大食军虽然勇猛,但是由于没有火器,单凭刀枪弓弩,自然不是唐军的对手,唐军顺利攻入城内。
由于开罗城比较大,而且街道狭窄,民房众多,那些大食军打不过唐军就到处躲藏。唐军由于对城市不熟,到处追击溃退的大食军,满城追赶,还经常会迷路。最后唐军干脆放弃小股的大食军,专打大股的军队,往市中心的总督府攻去。
开罗的攻防战打了两天,城内的守军败像明显,优素福感觉再不跑就来不及了,带领一些亲兵跑到尼罗河边,乘坐几十艘船,向下游逃去。总督一逃,其他守军也无心坚守,有的也乘船从尼罗河逃跑,但是大部分人直接从城北的陆路逃跑。
早就在东北方待机的邹元标,趁机率军截击大食溃军,这些溃逃的大食军被截击后,有的就地投降,有的则往西北方向沿着尼罗河