Узимку 1942/43 рр. у ході війни настав перелом. 19 листопада перейшли в наступ війська Південно-Західного й Донського фронтів, а наступного дня – Сталінградського фронту. Долаючи опір супротивника, 23 листопада сили наступаючих фронтів з’єдналися в районі містечка Калач-на-Дону. Унаслідок цього в оточенні під Сталінградом опинилися 22 дивізії і 160 окремих частин 6-ї польової й 4-ї танкової німецьких армій загальною чисельністю 330 тис. солдатів та офіцерів. Спроба ударного угруповання в складі 650 танків іззовні прорвати оточення після 12-денного бою (12 – 24 грудня) завершилася невдачею. 16 грудня перейшли в наступ сили Воронезького і правого крила Південно-Західного фронтів. Під їх ударами впали 8-а італійська і 3-я румунська армії, які тримали оборону на правобережжі Дону. У ході боїв частини 1-ої гвардійської армії Південно-Західного фронту вступили на територію України і 18 грудня звільнили село Півнівка Ворошиловградської області.
Перед новим роком сподівання німецького командування на врятування оточеного угруповання вкінець провалилися. Втім бої під Сталінградом тривали ще понад місяць і закінчилися 2 лютого 1943 р. повним знищенням ворога. Ця катастрофічна поразка Німеччини визначила весь подальший перебіг війни.
У січні радянські армії перейшли в наступ по всій лінії фронту від Воронежа до Кавказу. Від гітлерівців були звільнені величезні території. До 18 лютого радянські війська ввійшли в Краснодар, Ростов-на-Дону, Курськ, Бєлгород. 14 лютого німці залишили Ворошиловград, а 16 лютого – Харків. На 18 лютого передові частини Брянського, Воронезького і Південно-Західного фронтів упритул підійшли до Орла, Сум, Дніпропетровська і Запоріжжя. Унаслідок радянського наступу в листопаді – лютому 1942/43 років втрати німецької армії сягнули 1,7 млн чоловік (100 дивізій), 24 тис. гармат, 3,5 тис. танків, 4,3 тис. літаків.
Але на початку березня противник зумів зібратися із силами й перейти в рішучий контрнаступ. Упродовж 4 – 25 березня 1-а і 4-а танкові армії генерал-фельдмаршала Манштейна просунулися до Сіверського Донця й знову захопили Харків і Бєлгород. Після цього до літа на фронтах наступило затишшя. Обидві сторони готувалися до нових боїв.
Ціною мобілізації резервів німецькому командуванню вдалося зосередити значні сили на ділянці фронту Орел – Бєлгород. Улітку 1943 р. планувалося нанести удари з півночі і півдня по Курську, щоб оточити радянські війська на Курському виступі, а потім розгорнути широкомасштабний наступ, який повинен був змінити хід війни на користь Німеччини (операція „Цитадель”). 5 липня наступом німецьких танкових армій у районах Понирів і Прохорівки, почалася грандіозна Курська битва. Попри все, ворог не спромігся подолати добре підготовлену радянську оборону. А вже 12 липня перейшли в контрнаступ війська Брянського та Степового фронтів. За 50 днів безперервних боїв німці втратили 500 тис. солдатів та офіцерів (30 дивізій) і змушені були відступати, залишивши до кінця серпня Орел, Бєлгород і Харків.
Розвиваючи успіх, у вересні радянські війська звільнили Донбас і Лівобережжя та вийшли до Дніпра. У той же час було проведено переформування радянських військ. Воронезький фронт перейменували на 1-й Український (командувач Микола Ватутін), Степовий фронт – на 2-й Український (командувач Іван Конєв), Південно-Західний – на 3-й Український фронт (командувач Родіон Малиновський), Південний – на 4-й Український фронт (командувач Федір Толбухін).
21 вересня почалася битва за Дніпро, який гітлерівці перетворили на основний елемент потужної захисної лінії, названої „Східним валом”. Оборону по Дніпру тримали німецькі групи армій „Центр” (у Білорусі), „Південь” і „А” (в Україні). Військам 1-го Українського фронту вдалося захопити плацдарм на правому березі річки, у районі Великого Букрина. Втім розвинути наступ на цьому напрямі виявилося надто складно. Тоді було здійснено спробу форсувати Дніпро на північ від Києва. Війська 38-ї армії захопили плацдарм у районі Лютежа. Звідси 3 листопада розпочалися бої за визволення Києва. 6 листопада радянські війська здобули столицю України і просунулися далі на захід. Намагаючись повернути Київ будь-якою ціною, німці перейшли в контрнаступ і знову захопили втрачені було Житомир і Коростень. У ході двотижневих боїв (13 – 25 листопада) німецький контрнаступ виснажився.
Унаслідок наступу 1-го й 2-го Українських фронтів у районі Києва – Житомира і Кременчука – Дніпропетровська між ними утворився глибокий Корсунський виступ, який утримували 8-а польова і 1-ша танкова армії німецької групи армій „Південь”. 24 січня 1944 р. почалися дії з метою повного оточення цих армій, а вже 28 січня сили обох Українських фронтів з’єдналися біля Звенигородки. У „котлі” опинилися 73 тис. німецьких солдатів та офіцерів. Спроби прорвати оточення зовнішнім ударом з боку Умані не до чого не привели, і 17 лютого оточене угруповання противника було знищено, при цьому загинуло понад 50 тис. гітлерівців. На честь цих подій місто Корсунь перейменували на Корсунь-Шевченківський.
Корсунь-Шевченківська операція проводилася рівно через рік після Сталінградської битви, за тих же погодних умов, з використанням з обох боків тих же стратегічних прийомів. Чергова тяжка поразка підірвала сили гітлерівців і протягом березня вони відступили з Правобережжя.
Воєнні дії на півдні відзначилися вдалою Березнегувато-Снігурівською операцією 6 – 18 березня. За ті 12 днів війська 3-го Українського фронту оточили й знищили частини 6-ї німецької і 3-ї румунської армій групи армій „А” (8 дивізій). Одразу після цього було звільнено Херсон (13 березня), Миколаїв (28 березня) та Одесу (10 квітня).
8 квітня – 12 травня 1944 р. силами 4-го Українського фронту та Окремої Приморської армії за підтримки кораблів Чорноморського флоту й Азовської флотилії німців було вибито з Криму.
Ще в березні війська 2-го Українського фронту, переслідуючи 8-у армію противника, вийшли на довоєнний радянсько-румунський кордон – річку Прут.
Неминуча поразка Німеччини ставала очевидною. І чим далі лінія фронту просувалася на захід, тим гостріше поставало питання майбутнього устрою Польщі і західноукраїнських областей. Провідники польського руху опору бачили Галичину та Волинь у складі відродженої Польщі, а лідери УПА плекали надію на відродження Української держави. Тож українсько-польські стосунки влітку 1943 р. вкрай загострилися й переросли в запеклі збройні сутички між силами Української повстанської армії і польською Армією Крайовою. У ході протистояння, що охопило головним чином Волинь, постраждали десятки тисяч українських і польських мирних жителів. Але повоєнна доля Польщі й України вирішувалася без участі обох поневолених народів : держави-переможці (СРСР, США і Велика Британія) окреслили кордони повоєнної Європи на конференціях у Тегерані (28 листопада – 1 грудня 1943 р.) і в Ялті (4 – 11 лютого 1945 р.).
Після нетривалого перепочинку радянські війська розпочали літню наступальну кампанію 1944 р. На радянсько-німецькому фронті Червоній армії чисельністю в 6,6 млн чоловік протистояли сили вермахту чисельністю 4,3 млн чоловік. На ту пору командування 1-м Українським фронтом перейшло до Георгія Жукова (генерал армії Ватутін загинув навесні 1944 р.). У липні очолювані ним війська пішли в рішучий наступ проти німецької групи армій „Північна Україна”, перенесли бойові дії на територію Польщі, вийшли до Вісли і призупинили просування тільки на підступах до Варшави. В ході Львівсько-Сандомирської наступальної операції (13 липня – 29 серпня 1944 р.) головні сили „Північної України” було розгромлено. Одночасно перейшли у наступ сили 2-го й 3-го Українських фронтів. На території Молдавії ними було проведено Яссько-Кишинівську операцію по оточенню і розгрому німецько-румунських армій групи „Південна Україна” (20 – 29 серпня). Унаслідок цього Румунія капітулювала (24 серпня) і приєдналася до антигітлерівського блоку.
8 жовтня було звільнено останній населений пункт Української Радянської Соціалістичної Республіки в її довоєнних межах – село Лавочне у Карпатах. Відразу потому радянські війська перейшли гори. 27 жовтня з боями було здобуто Ужгород і війна перекинулася на території німецьких сателітів – Угорщини і Словаччини.
У 1945 р. війська 1-го Українського фронту визволяли Польщу і брали участь у штурмі Берліна. Війська 2-го, 3-го й 4-го Українських фронтів завершили свою переможну ходу на теренах Чехо-Словаччини, Угорщини й Австрії.