Но Цезарь всё ещё не мог начать основную схватку с врагами. Теперь, когда подоспело подкрепление и численность его армии достигла почти 30 тысяч, потребность в пополнении запасов продовольствия заставляла его постоянно находиться на марше, и так, всё время отбиваясь от конницы Лабиена, он продвинулся на 7 миль в глубь страны. Теперь у обеих сторон возникли проблемы дисциплинарного характера. Бывшие мятежные легионеры Цезаря из Кампании прибыли в его лагерь после ужасного, голодного перехода. Они горько сетовали на то, что их командующий Авений путешествовал в роскоши, тогда как они несли все тяготы долгого пути. Цезарь сразу же воспользовался возможностью отправить обратно этого военачальника, причинявшего ему только беспокойство. Метелл Сципион также страдал от дезертирства. Его неразумная речь, обращённая к войскам, в которой он много говорил об «освобождении» римского народа и сената и ничего не сказал о вознаграждении для солдат, отнюдь не исправила положение.
Тем временем Цезарь после продолжительного и быстрого передвижения с места на место наконец нашёл способ заставить противника вступить в бой. Он добился этого блокадой одного из важных для противника городов, Тапса (на мысе Рас-Димас). Цезарь уже установил блокаду города с моря, поскольку, как он и ожидал, Метелл Сципион понимал, что не может себе позволить потерять находившийся там значительный гарнизон и склады. Тапс был расположен на участке суши шириной от полутора до трёх миль, между морем и заболоченным озером. Когда Цезарь выдвинулся на эту полосу, воины Помпея, забыв о совете Катона следовать тактике Фабия, решили, что смогут спасти Тапс и в то же время загнать врага в угол. Поэтому они поспешили блокировать мыс с обоих концов: Юба и Афраний — с юга, а Метелл Сципион — с севера.
Цезарь выбрал такое поле битвы, на котором силы врага были разделены, а возможности вражеской конницы строго ограничены, и вынудил Метелла Сципиона вступить в сражение. Вероятно, он получил необходимую ему секретную информацию о присутствии своих отрядов в тылу врага.
Битва, происходившая 6 апреля 46 года до н. э., началась не так, как планировал Цезарь. По его собственным словам, он был нездоров, и его голодные, оборванные солдаты, возбуждённые рассказами о богатстве врага и признаками паники в его рядах, пошли в атаку прежде, чем получили приказ от Цезаря. Однако диктатор смог извлечь выгоду и из этой ситуации, ринувшись в бой вместе с ними. Боевые слоны царя Юбы испугались лучников и солдат, стрелявших из пращи, и бросились в панике назад, топча пехотинцев, попадающихся на пути. Африканская конница также панически отступила. Через несколько минут целое войско было разбито, а Юба и Афраний бежали, как только услышали эти страшные известия.
Ещё одна кампания гражданской войны закончилась. Причём её завершение было более тяжёлым, чем когда-либо прежде, поскольку голодающие ветераны Цезаря вышли из повиновения. Они уничтожили более 10 тысяч солдат Помпея, которые хотели сдаться в плен, а затем резко выступили против римских сенаторов и даже против собственных командиров, которых они обвиняли в мягкости к врагу. Лабиену и сыновьям Помпея снова удалось скрыться. Катон решил, что для него настал час расстаться с жизнью, поскольку единственно возможным путём к спасению было сдаться на милость Цезаря. В Утике он покончил самоубийством, создав, таким образом, легенду, которая впоследствии оказалась очень неудобной для Цезаря. Метелл Сципион, загнанный Ситтием в море, закололся кинжалом. Его кончина была героической, чего никак нельзя было сказать о его жизни. Нумидийский царь Юба планировал совершить самоубийство, сопровождаемое гигантским жертвоприношеним, во время которого вся его столица должна была превратиться в огромный костёр, но жители города отказались участвовать в этом представлении и не допустили его. Тогда Юба и Марк Петрей после прощального обеда начали смертельный поединок. Юба убил своего римского союзника, а затем приказал рабу добить себя.
Список убитых расширялся. Цезарь приказал казнить Афрания, одного из командующих противника, который, возможно, был сыном Суллы. Однажды Цезарь уже проявил милосердие и во второй раз не собирался распространять его даже на такого человека, как Афраний, который был в своё время консулом. Милосердие диктатора иссякло. Он продемонстрировал это в случае со своим собственным родственником, которого обвинили в жестоком обращении с рабами и свободными гражданами, а также в не менее серьёзном преступлении — в истреблении животных, предназначенных для погребальных игр, запланированных в память о дочери Цезаря Юлии. Заключённый умер при таинственных обстоятельствах в ожидании суда. Возможно, он был убит по указанию своего могущественного родственника, которому демонстрировал постоянную враждебность.