Sáng ngày 20-4-1882, Rivie gửi tối hậu thư cho Hoàng Diệu đề ra những điều kiện hỗn xược như bắt các quan tỉnh phải nộp mình ngay 8 giờ sáng hôm sau. Hoàng Diệu cử án sát Tôn Thất Bá ra gặp Rivie đề nghị hoãn trả lời lại một hôm để có thì giờ chuẩn bị thêm. Nhưng Tôn Thất Bá vốn đã tư thông với Pháp, bỏ chạy trú ẩn ở làng Mọc. Quân Pháp bắt đầu nổ súng.
Từ 8 giờ đến 10 giờ, ba tàu chiến của chúng ở dưới sông thi nhau nhả đạn vào thành, đồng thời bộ binh chúng kéo vào đánh thành.
Trên đường tiến quân, quân đội Pháp vấp ngay sự kháng cự của nhân dân Hà Nội. Để cản trở bước chân giặc, nhân dân tự tay châm lửa đốt nhà mình và từng dãy phố của mình thành một bức tường lửa khiến cho chúng phải lúng túng, tìm đường tiến quân qua các chiến hào đầy nước và bùn.
Đến 10 giờ quân Pháp bắt đầu công thành.
Ngay khi thực dân Pháp bắt đầu nổ súng, Hoàng Diệu mặc dù đang ốm vẫn dẫn đầu tướng sĩ lên mặt thành chỉ huy chiến đấu. Khi quân Pháp xông tới đánh thành, một trận giáp chiến ác liệt nổ ra.
Cuộc chiến tiếp diễn đến 11 giờ trưa thì một sự việc bất ngờ xảy ra là kho thuốc súng trong thành bỗng nhiên bốc cháy, khiến tinh thần quân sĩ bắt đầu hoang mang. Thừa lúc đó, quân Pháp dồn lực lượng vào đánh phá cửa Tây và cửa Bắc. Quân ta bắt đầu tan rã. Cũng phải nhắc tới sự kiện là, trong khi quân trong thành còn đang chiến đấu, nhân dân Hà Nội sau khi đốt từng dãy phố để làm chậm bước tiến quân của chúng, đã kéo đến cửa Tây chống giặc. Mặt khác tất cả các nhà đều khua trống, đánh chiêng để hỗ trợ tinh thần của quan quân trong thành. Ngoài ra, có cả hàng ngàn dân vũ trang bằng giáo mác, gậy gộc kéo nhau đến tập họp trước đình Quảng Văn (nay là ngã năm Cửa Nam) và do Nguyễn Đồng, người Bích Câu, đỗ cử nhân võ đốc xuất, thẳng tiến vào thành để cùng với quan quân chống giữ. Nhưng chưa vào đến nơi thì khi thuốc súng đã nổ, giặc đã làm chủ toà thành.
Khi thấy các cửa thành đã bị phá và quân sĩ đã rối loạn không thể chiến đấu được nữa, Hoàng Diệu quay vào hành cung bái vọng, thảo một tờ biểu để lại cho Tự Đức trong đó có đoạn:
“Làm sao tin được lòng giặc nên thần lo sửa soạn đề phòng. Việc chưa xong thì quân Pháp kéo đến. Thần trộm nghĩ: Hà Nội là cái cuống họng của Bắc Kỳ nên thần thường tâu về triều đình xin thêm binh. Nhưng bệ hạ lại quở trách.”
Sau đó ông đến Võ Miếu tự tử. Quân tướng ta thấy không còn điều kiện chiến đấu được nữa nên đều bỏ chạy.
Sau khi chiếm xong thành Hà Nội, cướp đoạt tiền bạc, Rivie cho gọi Tôn Thất Bá về giao cho coi một phần thành, còn hắn vẫn chiếm đóng hành cung.
Chủ trương của thực dân lúc này là trong 3 ngày, cấp tốc buộc Tự Đức phải ký hoà ước mới, nhận cho chúng quyền đóng 600 quân ở Hà Nội, cho tàu chiến của chúng tự do đi lại khắp nơi và cho chúng giữ độc quyền thương chính. Như thế, theo chúng là “đủ để đặt sự bảo hộ của Pháp hoàn toàn trên đất Việt Nam, ít nhất là trên Bắc Kỳ” (Correspondance politique du commandant Rivière au Tonkin – A.Masson, tr.84). Để lừa triều đình Huế, Rivie cho tàu chiến vào cửa Thuận An, báo cho Tự Đức biết là y sẽ trả lại Hà Nội.
Phản ứng của quân dân Hà Nội
Được tin thực dân Pháp đánh chiếm Hà Nội, triều đình Huế không biết hành động ra sao. Nhưng khi thực dân Pháp đưa tin sẽ trả lại, Tự Đức tin ngay và cử Trần Đình Túc, Nguyễn Hữu Độ theo tàu chiến của chúng ra Hà Nội hội thương và nhận thành.
Hai người này ra tới Hà Nội một mặt trong khi tiếp xúc với giặc đã nhìn rõ bản chất xâm lược của chúng, mặt khác cũng nhận ra tinh thần kháng chiến mãnh liệt của quân dân Bắc Kỳ, nên trở về tâu với Tự Đức hoặc phải dốc lực lượng toàn quốc ra đuổi giặc, hoặc phái người đi Pari, đi Sài Gòn mà trách hỏi (?). Tự Đức cương quyết vẫn không cho đánh, cdaancho thương thuyết với phái viên Pháp ở Hà Nội, ngay cả với điều kiện thoả mãn yêu cầu của thực dân: Tự Đức không những đã lệnh cho Hoàng Tá Viêm phải đuổi ngay quân của Lưu Vĩnh Phúc đi theo yêu cầu của Pháp, lại còn sai Nguyễn Hữu Độ thân tới gặp Viêm bắt phải tuân lệnh, và bắt các tỉnh phải giải tán ngay binh dũng “ không được trù trừ nước đôi rồi đến hỏng việc”.
Nhưng trước thái độ khiếp nhược của Tự Đức, Hoàng Tá Viêm không tuân dụ, không đuổi đoàn quân của Lưu Vĩnh Phúc, và chuẩn bị sẵn sàng binh lực chiến đấu.
Nhân dân xung quanh Hà Nội cương quyết không bán lương thực cho địch. Các đội dân dũng nổi lên ở các tỉnh quanh Hà Nội vẫn sẵn sàng chiến đấu, bất chấp lệnh chỉ của triều đình.
Đầu tháng năm, quân ta xiết chặt vòng vây quanh Hà Nội. Rivie bị ép giữa hai gọng kìm lớn của hai đạo quân Sơn Tây và Bắc Ninh.
Đêm mùng 8, đại bác của quân ta đặt ở bên kia sông hồng, bắt đầu nhả đạn vào Hà Nội. Đêm 15-5 quân ta đột kích căn cứ nhà thờ Hàm Long của địch. Trước tình hình bị uy hiếp, Rivie hoảng hốt xin viện binh của Hải Phòng và của Sài Gòn. Đêm đêm, đại bác của quân ta bên phía Gia Lâm lại bắn sang.
Từ phía Sơn Tây, Lưu Vĩnh Phúc cho quân đột nhập vào giữa thành phố Hà Nội, dán yết thị thách Rivie đánh nhau trên cánh đồng phủ Hoài Đức.