Lưu Bị chạy đến Nghiệp Thành ( trị sở của Kỳ Châu, nay ở Tây nam Lâm Chương, Hà Bắc) khiến Viên Thiệu thấy được Tào Tháo là một địch thủ đáng gờm. Vì vậy, ông quyết tâm đánh Hứa đô. Điền Phong, người trước kia khuyên Viên Thiệu đánh Hứa đô hồi trước, bây giờ lại khuyên Viên Thiệu không nên. Ông nói: “Hiện nay, Hứa đô không còn bị bỏ trống nữa, sao có thể vội đánh được. Tào Tháo tuy ít quân, nhưng lại giỏi dùng binh, nhiều tài biến hóa, không nên xem thường hắn. Tôi thấy nên tính toán kỹ lưỡng hơn đã”.
Viên Thiệu không nghe, Điều Phong cứ cố can mãi. Viên Thiệu cho rằng Điều Phong làm rối lòng quân, liền bắt giam lại. Sau đó, sai người thảo hịch kể tội Tào Tháo, gửi đi các nơi.
Năm 200, Viên Thiệu đem mười vạn tinh binh, phong Thư Thụ làm giám quân, từ Nghiệp Thành xuất phát tiến tới Lê Dương (nay ở huyện Tuấn, Hà Nam), phái Nhan Lương làm đại tướng, đi tiên phong dẫn quân vượt qua Hoàng Hà, tiến đánh Bạch Mã (nay là huyện Hoạt, Hà Nam).
Lúc đó, Tào Tháo đã dẫn quân về tới Quan Độ, nghe tin Bạch Mã bị vây, chuẩn bị tới cứu. Mưu sĩ Tuân Du khuyên: “Kẻ địch đông quân, chúng ta ít quân, không nên đọ sức với chúng. Chi bằng phái một đạo quân làm ra vẻ muốn vượt sông ở Diên Tân (nay ở Tây bắc Diên Tân, Hà Nam) thu hút quân chủ lực Viên Thiệu sang phía Tây. Lúc đó, chúng ta sẽ phải đội khinh kỵ tới Bạch Mã đánh thì chúng sẽ trở tay không kịp”.
Tào Tháo nghe theo Tuân Du, dùng kế dương đông kích tây để đánh lừa Viên Thiệu. Thiệu nghe tin Tào Thào muốn vượt sông ở Diên Tân, quả nhiên phái đại quân đến ngăn chặn. Ngờ đâu Tào Tháo đã thân dẫn khinh kỵ binh đánh tói Bạch Mã. Đại tướng Nhan Lương đang bao vây thành Bạch Mã không phòng bị, bị quân Tào đánh đại bại, Nhan Lương bị giết, Bạch Mã được giải vây.
Viên Thiệu nghe tin Tào Tháo đến cứu Bạch Mã, giết mất đại tướng của mình thì nổi giận đùng đùng. Giám quan Thư Thụ khuyên Thiệu lưu đại quân ở Diên Tân, chỉ đưa một bộ phận xuất kích. Nhưng Thiệu nóng báo thù, không nghe theo lời khuyên đó, cứ hạ lệnh cho toàn quân vượt sông đánh đuổi quân Tào, và phái đại tướng Văn Sú mang năm sáu nghìn kỵ binh đi tiên phong. Lúc đó, Tào Tháo đang rút từ Bạch Mã về Quan Độ, nghe nói quân Viên Thiệu đuổi theo, liền cử sáu trăm kỵ binh mai phục ở phía nam dốc Diên Tân, cho binh sĩ cởi bỏ yên cương, thả ngựa đi tản mát trên sườn núi, quẳng vũ khí, khôi giáp vứt đầy đường..
Kỵ binh của Văn Sú tới dốc phía nam, thấy vậy cho rằng quân Tào đã chạy xa nên cho binh sĩ đi thu nhặt vũ khí. khôi giáp trên đường. Bất ngờ, theo lệnh Tào Tháo, sáu trăm phục binh nhất tề xông ra chém giết, quân Thiệu không kịp chống trả, bị đánh tơi tả, Văn Sú cũng bị giết chết trong đám loạn quân.
Mới đánh hai trận, Viên Thiệu đã mất luôn hai viên đại tướng, tinh thần tướng sĩ hoang mang. Nhưng Viên Thiệu vẫn cay cú, nhất định truy kích Tào Tháo. Giám quân Thư Thụ bàn: “Quân ta tuy đông, nhưng không dũng mãnh bằng quân Tào; quân Tào tuy dũng mãnh, nhưng không nhiều lương thực như quân ta. Vì vậy, ta nên giữ vững ở đây đợi khi quân Tào hết lương, chúng sẽ phải tự động lui quân.
Viên Thiệu vẫn không nghe theo lài khuyên của Thư Thụ, cứ ra lệnh cho tướng sĩ tiếp tục tiến quân, đuổi tới tận Quan Độ, mối dừng lại hạ trại. Binh mã của Tào Tháo đã về tới Quan Độ từ lâu, bô’ trí xong thế trận, giữ vững thành luỹ.
Viên Thiệu thấy quân Tào dựa vào thành lũy cố thủ, liền sai quân đắp núi đất dựng đài cao ở ngoài thành, để binh sĩ leo lên bắn tên vào thành. Quân Tào phải dùng khiên mộc để chống lại mỗi khi di động trong thành.
Tào Tháo bàn với các mưu sĩ, thiết kế ra một máy bắn đá, gọi là “xe sấm sét.” Xe gồm một cần bẩy lớn, có thể phóng những tảng đá nặng mấy chục cân, phá nát các đài cao của Viên Thiệu, khiến nhiều quân Viên Thiệu bị toạc đầu vổ trán.
Viên Thiệu lại nghĩ cách khác. Ông sai quân ngầm đào các đường hầm vào ban đêm, định xuyên qua chân thành của Tào Tháo. Nhưng hành động đó sớm bị quân Tào phát hiện, đối phó bằng cách đào các hào dài và sâu trong chân thành để sớm tìm và chặn các đường ra của hầm ngầm. Kế hoạch của Viên Thiệu lại thất bại.
Cứ như vậy, quân hai bên cầm cự nhau ở Quan Độ hơn một tháng. Thời gian càng kéo dài thì quân Tào càng khó khăn về lương thực, binh sĩ cũng mỏi mệt. Tào Tháo thấy khó giữ được lâu, liền viết thư cho Tuân Húc ở Hứa Đô, báo tin sắp lui quân. Tuân Húc vội viết thư trả lời, khuyên Tháo cố gắng giữ vững dù có gặp khó khăn thế nào, để sẵn sàng nắm bắt thời cơ mới.
Lúc đó, lương thực của quân Viên Thiệu từ Nghiệp Thành lại ùn ùn chở tới. Viên Thiệu cử đại tướng quân Thuần Vu Quỳnh dẫn một vạn quân đi hộ tống đoàn xe chở lương tới tích trữ tại o Sào cách Quan Độ bốn mươi dặm.
Mưu sĩ của Viên Thiệu là Hứa Du, biết quân Tào Tháo thiếu lương, liền hiến kế với Viên Thiệu, cử một đội quân nhỏ vòng qua Quan Độ đánh úp lấy Hứa Đô. Viên Thiệu vẫn không nghe, cứ một mực thúc quân đánh Quan Độ.
Hứa Du đang muốn khuyên thêm nữa, thì từ Nghiệp Thành có tin tới, nói người nhà Hứa Du phạm pháp, đã bị quan địa phương bắt giam. Viên Thiệu đọc thư, liền trách mắng Hứa Du thậm tệ.
Hứa Du căm giận, lại nghĩ mình với Tào Tháo là bạn cũ, nên ngay trong đêm, rời bỏ trại quân của Viên Thiệu, chạy sang với Tào Tháo.
Tào Tháo vừa cởi bỏ quần áo ngoài chuẩn bị đi ngủ, nghe tin Hứa Du tới, thì vô cùng mừng rỡ, không kịp khoác áo xỏ giầy, chạy vội ra đón reo to: “Hay quá, bạn ta đến. chắc là đại sự sắp thành công rồi.”
Hứa Du vừa ngồi xuống liền hỏi: “Quân Viên Thiệu mạnh lắm. Ngài định đối phó thế nào. Lương ăn của quân sĩ còn được bao nhiêu?”
Tào Tháo nói: “Còn đủ ăn một năm nữa.”
Hứa Du cười nhạt nói: “Không còn nhiều thế đâu.”
Tào Tháo lại nói: “Đúng vậy, chỉ còn khoảng nửa năm nữa thôi.”
Hứa Du giả làm mặt giận nói: “Ngài chẳng lẽ không muốn đánh thắng Viên Thiệu sao? Lẽ nào, với bạn cũ mà còn nói dõi như vậy!”
Tào Tháo đành nói thực: “Lương thực trong quân, chỉ đủ dùng một tháng nữa thôi! Ông xem có cách nào không?”
Hứa Du nói: “Tôi biết bạn cũ đang gặp khó khăn nên tìm tới giúp đỡ đây. Hiện Viên Thiệu có hơn một vạn xe lương thực và khí giới, để cả ở Ô Sào. Thuần Vu Quỳnh phòng bị rất lơi lỏng. Ngài nên phái một đội khinh kỵ đến tập kích phóng hoả đốt tất cả đi, thì chỉ không tới ba ngày, quân Viên Thiệu không cần phải đánh cũng tan.”
Nhận được tin tình báo quan trọng đó, Tào Tháo liền gọi ngay Tuân Du, Tào Hồng tới, dặn họ giữ vững Quan Độ, còn tự mình dẫn năm ngàn kỵ binh, đi suốt đêm tới Ô Sào. Quân Tào đều mang cò hiệu của Viên Thiệu, gặp quân canh gác, đều nói là Viên Thiệu sai tới tăng viện cho Ô Sào, quân canh gác không nghi ngờ gì, cứ để họ đi qua.
Quân Tào tới Ô Sào, liền vây chặt rồi phóng hoả, đốt hết một vạn xe lương, tướng giữ Ò Sào, là Thuần Vu Quỳnh, đang mải chè chén, luống cuống đem quân đối phó, bị quân Tào giết chết.
Tướng sĩ của Viên Thiệu đang vây đánh Quan Độ, thấy phía ở Sào lửa cháy rực trời, thì hoang mang rối loạn. Hai đại tướng của Viên Thiệu là Trương Cáp, Cao Lãm chạy sang hàng quân Tào. Quân Tào thừa thế xông ra đánh mãnh liệt. Viên Thiệu và con là Viên Đàm không kịp mang khôi giáp cuống quýt đem theo tám trăm kỵ binh chạy về phía Bắc.
Qua trận quyết chiến này, quân chủ lực của Viên Thiệu bị tiêu diệt. Hai năm sau, Viên Thiệu ốm chết. Tào Tháo mất bảy năm nữa, mới quét hết thế lực tàn dư của Viên Thiệu, thống nhất được miền Bắc Trung Quốc.