Поход на Яффо начался 27 июля. В тот же день армия Салах ад-Дина уже стояла в предместьях этого города и начала разбивать лагерь. Еще спустя какое-то время город был взят в кольцо: правый фланг под командованием аз-Захира упирался в море; левый под командованием аль-Адиля контролировал Яффскую гавань с другой стороны, а сам Салах ад-Дин взял на себя командование центром.
Первый штурм Яффо был предпринят 28 июля, и в мусульманском стане были уверены, что в отсутствие Ричарда и его армии город можно будет взять в течение одного дня. Все вроде бы было сделано предельно грамотно: вокруг самых слабых участков стен установлены баллисты; саперы начали заниматься подкопом; армия была готова ворваться в проем, как только рухнут стены, и одновременно начала взбираться на них по приставным лестницам.
Но осажденные христиане неожиданно проявили отчаянное мужество и смекалку и оказали яростное сопротивление. Им удалось отбить первый натиск сарацин, а также вовремя обнаружить подкоп и завалить его, так что саперам, находившимся в самом разгаре работы, пришлось спасаться бегством.
Салах ад-Дин в ответ принял решение ночью перенести баллисты и начать подкоп у другой части крепостных стен, но неудача предыдущего дня заметно охладила пыл его воинов. Они уже шли в бой далеко не так охотно, как вначале, а эмиры стали поговаривать, что сил для взятия Яффо все равно недостаточно, и вдобавок со дня на день у города может появиться Ричард Львиное Сердце со своей армией.
Эти настроения не укрылись от внимания Салах ад-Дина. Тем не менее на следующий день он велел предпринять новый штурм и сам пошел впереди войска — в надежде, что осажденные уверятся в решительности сарацин взять город и начнут переговоры о его сдаче.
Бой получился жарким. В ответ на обстрел баллистами и стрелами защитники Яффо также отвечали градом камней и меткой стрельбой из арбалетов. Но Салах ад-Дин вновь доказал свою прозорливость: к вечеру из Яффо выехали два парламентера, уполномоченные вести переговоры о сдаче города.
Ответ Салах ад-Дина был краток: он готов принять капитуляцию Яффо на тех же условиях, на которых пять лет назад принял капитуляцию Иерусалима. Но парламентеры почти не скрывали, что рассчитывают на помощь Ричарда, и потому попросили о двухдневном перемирии, на что Салах ад-Дин дал резкий отказ и приказал продолжить подкоп под стены.
На следующий день переговоры возобновились, но результат был тот же. К этому времени один из подкопов был завершен, саперы запалили нефть и хворост — и стена рухнула. Но оказалось, что защитники Яффо были готовы к такому развитию событий. Они точно определили место, где стене предстояло рухнуть, заложили там большую пирамиду из дров и подожгли ее. Поэтому, когда мусульманские воины бросились в образовавшуюся брешь, их встретила стена огня, а затем им пришлось вступить в схватку с гарнизоном города. Начавшийся бой затянулся до темноты, причем мусульмане были вынуждены отдать должное тому мужеству, с которым противник, явно уступавший им в численности, отражал натиск.
Утром следующего дня, 30 июля, Салах ад-Дин велел установить еще две дополнительные баллисты и беспрерывно обрушивать камни на ослабленные подкопом стены. Но это легко было сказать «беспрерывно обрушивать камни». На самом деле в окрестностях Яффо камней не было, их приходилось привозить издалека, а потому Салах ад-Дин изменил свое решение и приказал обстреливать лишь часть стены, одновременно продолжая подкоп.
Наконец саперы завершили свою работу. Зажженное под землей пламя взметнулось вверх, и раздался страшный грохот — часть стены рухнула, подняв в воздух огромные клубы пыли, сквозь которые прорывались языки пламени из подкопа.
Мусульманская армия замерла, ожидая, когда клубы пыли и дыма рассеются, а когда это произошло, то увидела выстроенную в образовавшейся бреши живую стену из вооруженных копьями и алебардами христиан. Решив сберечь армию, Салах ад-Дин приказал закидать защитников Яффо камнями из баллист, но на место падавших под ударами камней вставали новые, и это отсутствие у противника страха перед смертью вновь поразило мусульман.
Затем армия Салах ад-Дина пошла в атаку, и начавшийся бой был поистине страшным: христиане гибли один за другим, но и не думали отступать.
В самый разгар боя из города выехали парламентеры, и их пропустили в ставку султана. На этот раз он предложил иные условия: жителям Яффо будет сохранена жизнь, но на свободу они будут отпущены в рамках обмена пленными: каждый рыцарь — на мусульманского всадника, оруженосец — на легковооруженного мусульманского воина, пехотинец — на пехотинца, а старики должны будут заплатить выкуп по тому же тарифу, что и в Иерусалиме.
Когда эти условия вроде бы были приняты, парламентеры попросили султана остановить бой, чтобы они могли вернуться в город, но Салах ад-Дин заявил, что его бойцы охвачены таким боевым пылом, что он просто не в состоянии дать такой приказ. Вместо этого он посоветовал прибывшим немедленно сдать большую часть Яффо, велев всем христианам отступить и запереться в ее замке.