С рассветом 21 ноября ветер и в самом деле начал смещаться к северу, и легкий бриз вскоре сменился настоящим штормом. Подготовленные брандеры княжества У на всех парусах направились к лагерю северян, следом вышел и весь остальной флот. Цао Цао поначалу спокойно наблюдал за приближением судов противника, полагая, что флот южан, возможно, и в самом деле идет сдаваться. Когда же на передовом корабле вспыхнул огонь, он забеспокоился и отдал приказ остановить корабли Хуан Гая. Однако его скованные цепями и скрепленные помостами суда оказались не в состоянии действовать быстро, а время на рассоединение армады было уже упущено. Заградительный огонь из луков и стрелометов не мог причинить вреда легким брандерам противника, которые ветер гнал прямо на огромное скопление судов северян.
Когда брандеры союзников ворвались в неповоротливую гущу флота Цао Цао, сидящие на привязанных сзади них лодках люди бросили на палубы горящие факелы. Вдобавок моряки Хуан Гая забросали брандеры горящими стрелами. Мгновенно вспыхнувший огонь, раздуваемый сильным ветром, стал быстро распространяться по кораблям северян, наводя ужас на неопытных моряков и вызвав панику, из-за которой многие сгорели, но еще большее количество солдат утонуло, спасаясь от огня.
Воспользовавшись суматохой, возникшей в результате грандиозного пожара, вскоре перекинувшегося с флота Цао Цао на наземные укрепления, десант Чжоу Юя высадился на берег и нанес удар по сухопутным силам северян. Эта неожиданная атака застала армию Цао Цао врасплох, и ударный корпус стал быстро теснить ее, нанося обескураженному противнику значительный урон. Бушующий на ветру огонь и хаос, воцарившийся в лагере, едва не вызвали паническое бегство северян. Однако Цао Цао был опытным и хладнокровным полководцем, он быстро оценил ситуацию и ввел в дело стоявшую за Вороньим лесом конницу.
Наблюдавший с высоты Чжугэ Лян прекрасно видел, что ударный корпус Чжоу Юя не выдержит атаки сильной конницы Цао Цао. Остальная же армия княжества У, возглавляемая самим правителем Сунь Цуанем, начала переправу через Янцзы непосредственно к месту сражения. Однако недостаток паромов превратил ее в такой хаос, что южане явно не успевали поддержать свой десант. Быстро оценив обстановку, Чжугэ Лян отдал приказ корпусу Лю Бэя ударить в тыл коннице Цао Цао.
Поначалу мощная кавалерия северян и в самом деле резко изменила ситуацию на поле боя, оттеснив десантный корпус южан назад к реке и грозя ему полным уничтожением. Но тут подоспел кавалерийский корпус, посланный Чжугэ Ляном, и напор конницы Цао Цао сразу ослаб. Видя, что его конница атакована с тыла, а также что к Чжоу Юю присоединяются уже переправляющиеся войска Сунь Цуаня, Цао Цао отдал приказ затопить оставшиеся корабли и отойти, намереваясь перестроиться и готовить новую битву. Чжоу Юй вновь перешел в наступление, а вскоре к нему присоединился и Сунь Цуань.
Выведя свои войска из тисков, в которые их взяли противники, Цао Цао понял, что надежд на контрнаступление у него нет. Потери были слишком велики, и большая часть войска оказалась деморализована. Поэтому, прикрыв остатки армии сильным арьергардом, Цао Цао решил отойти еще дальше на север. Войска Сунь Цуаня и Чжоу Юя преследовали его, но так и не смогли преодолеть сопротивления вражеского арьергарда.
Тем не менее поражение при Красных скалах привело к катастрофе армии Цао Цао. Во время отступления его войска продолжали нести большие потери из-за начавшейся непогоды. Больные и измученные солдаты северян вынуждены были таскать хворост, чтобы мостить раскисшие дороги для прохода кавалерии; тысячи трупов людей и лошадей устилали путь отступления. К ставке императора премьер-министр привел лишь жалкие остатки изнуренной армии. Лю Бэй тем временем захватил Цзинчжоу и Наньцзян (область к югу от Янцзы), где вскоре основал самостоятельное княжество.