Уже с 23 июля немецкое наступление велось в расходящихся направлениях. Группа армий «А» шла на Кавказ, а группа армий «Б» – на Сталинград. 23 августа 1942 года немецкий 14-й танковый корпус вышел к Волге севернее Сталинграда. В тот же день люфтваффе совершили массированный налет на город. Ценой больших потерь три советские армии непрерывными контратаками задержали продвижение северной группировки 6-й армии и не позволили ей овладеть Сталинградом с ходу.
Только в начале сентября немцы достигли сталинградских окраин. Больше двух месяцев шли ожесточенные уличные бои в городе. Немцы применили тактику штурмовых групп, состоящих из отделения или взвода пехоты, усиленного саперами, огневыми средствами (пулеметами, огнеметами, минометами, противотанковыми орудиями) или танком (штурмовым орудием). Оборонявшие Сталинград красноармейцы несли значительно большие потери, чем противник, но упорно защищали каждый дом или корпус завода.
К середине ноября почти весь город был занят соединениями 6-й и 4-й танковой армий, но выбить 62-ю и 64-ю советские армии из узкой полосы прибрежных кварталов так и не удалось. На Кавказе тем временем немецкие войска овладели Новороссийском, Краснодаром, Ставрополем, нефтепромыслами Майкопа и Пятигорска и вели борьбу за перевалы Большого Кавказского хребта. Перевалы в конце концов перешли под контроль немецких горных стрелков, но прорваться в Закавказье вермахту не удалось.
Из-за разногласий с Гитлером начальник Генерального штаба германских сухопутных сил Гальдер вынужден был 24 сентября 1942 года уйти в отставку. Он видел опасность того, что немецкие дивизии узким клином вышли к Сталинграду, тогда как стороны клина прикрывают гораздо более слабые войска союзников. Гальдеру также не нравился большой разрыв между сталинградской и кавказской группировками, прикрытый лишь небольшим количеством войск. Он предлагал прекратить наступление на Кавказе и укрепить высвободившимися силами фронт у Сталинграда. Фюрер, однако, все еще мечтал о марше на Баку, а потом, когда стала очевидна невозможность достижения поставленных целей, пытался удержать все приобретения кампании, рассчитывая перезимовать на завоеванных позициях и весной 43-го вновь устремиться в Закавказье и к низовьям Волги.
Советская Ставка Верховного Главнокомандования еще с сентября начала готовить контрнаступление с целью окружения 6-й немецкой армии в Сталинграде. Сталин рассчитывал на юге разгромить все действующие там армии Германии и союзников, не дать им уйти с Кавказа и из междуречья Дона и Волги, а затем освободить Левобережную Украину. На центральном же участке фронта предполагалось ликвидировать Ржевско-Вяземский плацдарм, а затем нанести удар по направлению к Балтийскому побережью, отрезав находившуюся под Ленинградом группу армий «Север». Координировал действия Донского, Сталинградского и Юго-Западного фронтов начальник Генерального штаба Василевский. Он же вместе с Жуковым был автором плана контрнаступления.
Оно началось 19 ноября, а уже 23-го армия Паулюса и большая часть соединений 4-й танковой армии Гота оказались в «котле». Советские войска атаковали прикрывавшие фланги сталинградской группировки дивизии румынской 3-й армии, которые очень скоро обратились в бегство. Германское командование знало о готовящемся советском наступлении к северу и к югу от Сталинграда, но недооценила его масштаба и мощи. 1 декабря 1942 года начальник штаба 6-й армии генерал Артур Шмидт, загодя предупреждавший о грядущем советском наступлении, признал: «Все мы не разглядели опасности во весь ее рост… и в очередной раз недооценили русских». Сил же для отражения советских атак не было ни у 6-й армии, ни в распоряжении группы армий «Б».
Попытка деблокады, предпринятая в декабре фельдмаршалом Манштейном, возглавившим группу армий «Дон» (так теперь называлась группа армий «Б»), провалилась из-за недостатка войск и главным образом из-за мощного советского наступления на среднем Дону, в ходе которого были разбиты 8-я итальянская, 4-я румынская и 2-я венгерская армии. Одну из трех танковых дивизий немецкой деблокирующей группировки генерала Гота пришлось бросить для отражения советских угроз на Дону, и это вынудило Манштейна прекратить наступление на выручку Паулюсу. Но советское командование, опасаясь, что Гот соединится с окруженными, бросило против него 2-ю гвардейскую армию генерала Малиновского, ранее предназначавшуюся для стремительного броска на Ростов. В действительности нужды в такой переброске не было, поскольку немецкое наступление к Сталинграду окончательно остановилось еще до прибытия туда войск Малиновского. Гот все еще оставался на расстоянии более 60 км от «котла», тогда как у 6-й армии горючего было лишь на 30 км пути. 31 января – 2 февраля 1943 года армия Паулюса капитулировала. Советские войска взяли более 90 тысяч пленных.