Dankzij het Spaansgezinde Amsterdam konden de Spanjaarden met hun schepen het Haarlemmermeer opvaren. De weilanden aan de zuidzijde van Haarlem waren onder water gezet en dus onbegaanbaar, maar de stad kon langs deze kant via het water wel worden bevoorraad. Een blokkade van deze waterweg door Spaanse schepen zou de stad tot overgave moeten dwingen.
Eind mei 1573 had de Spaanse vloot 63 schepen op het Haarlemmermeer, onder leiding van de Graaf van Bossu. De geuzenvloot onder leiding van Marinus Brandt telde meer dan 100 schepen, maar die waren slecht uitgerust en de wind stond gunstig voor de Spanjaarden. De Hollanders werden op het meer verslagen. Het restant van de vloot vluchtte naar de Kaag en de Oude Wetering. Deze schepen werden opgewacht door Bossu’s luitenant Francois van Boshuizen. Hij veroverde nog eens 21 schepen.
In Haarlem was er een groot tekort aan voedsel en andere levensbehoeften. Daarom gaf de stad zich op 12 juli over. De Spaanse bevelhebber Don Frederik beloofde dat de bevolking gespaard zou blijven, maar deze belofte werd bij het binnentreden van de stad al snel geschonden. De Spanjaarden plunderden huizen en namen burgers en soldaten gevangen. 300 soldaten werden op de markt onthoofd, waarna nog eens 1200 soldaten en vele burgers hetzelfde lot wachten. De vijf beulen konden het werk nauwelijks aan en zo werd besloten 246 verdedigers van Haarlem rug aan rug te binden en in het Haarlemmermeer te verdrinken op de plaats waar nu het gemaal de Cruquius staat.