В ночь на 19 июля в сражение был введен Степной фронт. К исходу 23 июля советские войска своими главными силами вышли на рубеж, который они занимали до начала оборонительного сражения и начали подготовку к контрнаступлению.
К началу наступления на орловском направлении (операция «Кутузов») в составе левого крыла Западного (командующий генерал-полковник В. Д. Соколовский), Брянского (командующий генерал-полковник М. М. Попов) и Центрального фронтов имелось 1 286 тысяч человек, более 21 тысячи орудий и минометов, 2 400 танков и самоходно-артиллерийских установок. Их действия поддерживались более чем 3 тысячами боевых самолетов. Противостоящая им 2-я танковая и 9-я армии группы «Центр» насчитывали до 600 тысяч человек, более 7 тысяч орудий и минометов, около 1 250 танков и штурмовых орудий, свыше 1 100 боевых самолетов.
12 июля войска левого крыла Западного и Брянского фронтов нанесли удар по противнику. Армии правого крыла Центрального фронта перешли в контрнаступление 15 июля. Немецкие войска оказывали упорное сопротивление. Стремясь удержать орловский плацдарм, командование вермахта перебрасывало сюда подкрепление с других участков советско-германского фронта. Но эти меры оказались недостаточными.
3 августа после мощной артиллерийской и авиационной подготовки перешли в наступление войска Воронежского и Степного фронта на белгородско-харьковском направлении (операция «Полковник Румянцев»). В составе обоих фронтов насчитывалось 980,5 тысяч человек, более 12 тысяч орудий и минометов, 2 400 танков и самоход артиллерийских установок и 1 300 самолетов. Общая численность противника в районе Харькова и Белгорода (4-я танковая армия и оперативная группа «Кемпф») с учетом частей усиления и тыла составляла до 300 тысяч человек, свыше 3 тысяч орудий и минометов, до 600 танков и штурмовых орудий и более 1 тысячи самолетов.
Пять советских фронтов, преодолевая сопротивление противника, развивали наступление в 600-километровой полосе. Утром 3 августа соединения Брянского фронта прорвали оборону немцев реке Оптухе и устремились к Орлу. 5 августа Орел был освобожден. В этот же день воинами Степного фронта был освобожден Белгород. Вечером 5 августа Москва салютовала артиллерийскими залпами в честь доблестных войск, освободивших Орел и Белгород. Это был первый за время Великой Отечественной войны салют, отмечавший победу советских войск. Красная Армия продолжала наступление. К 18 августа войска Западного, Брянского и Центрального фронтов очистили от противника орловский выступ, и подошли к немецкому оборонительному рубежу «Хаген» восточнее Брянска. На этом Орловская наступательная операция завершилась.
За 37 дней наступления на орловском направлении советские войска разгромили до 15 немецких дивизий, другие дивизии оказались значительно ослабленными. Советские войска овладели важным орловским плацдармом противника, прикрывавшим брянское направление.
Войска Воронежского фронта к 11 августа завершили рассечение харьковской группировки немцев и охватили ее с трех сторон, создав угрозу ее полного уничтожения. Немецкое командование, чтобы не допустить ее окружения, решило контратаковать советские войска в богодуховском и ахтырском направлениях, сосредоточив западнее Ахтырки и южнее Богодухова крупные резервы — 4 пехотные и 7 танковых и моторизованных дивизий (в том числе три танковые дивизии СО «Райх», «Мертвая голова» и «Викинг»), имевших до 600 танков. Но все попытки врага нанести поражение советским войскам контрударами района южнее Богодухова (11–17 августа), а затем Ахтырки (18-20августа) не удались. Ожесточенные бои в этих районах закончились разгромом группировки противника.
22 августа немецкое командование начало отводить свои войска из района Харькова. 23 августа войска Степного фронта при содействии войск Воронежского и Юго-Западного фронтов освободили Харьков. Москва салютовала освободителям Харькова 20 залпами из 224 орудий.
На этом завершилось контрнаступление советских войск на белгородско-харьковском направлении, в ходе которого армии Воронежского и Степного фронтов продвинулись на 140–150 км и разгромили 15 дивизий противника, из них 4 танковые. Были созданы благоприятные условия для освобождения Левобережной Украины и выхода на Днепр.
Победа советских войск в Курской битве имела большое политическое и военное значение. Сражение под Курском развертывалось на фронте от 400 до 500 километров. В ней участвовали с обеих сторон громадные силы — до 300 дивизий, более 4 млн. человек, свыше 69 тысяч орудий и минометов, более 13 тысяч танков и самоходных орудий, до 12 тысяч боевых самолетов. (Золотарев В. А. Курская битва: взгляд через полвека // Вторая мировая война. Актуальные проблемы. С. 279–280.) По количеству участвующих эта битва превышала самые знаменитые предыдущие сражения. В ходе ожесточенных боев советские войска разгромили 30 отборных дивизий противника, в том числе 7 танковых. Потери танковых войск противника составили 1 300 танков. Главный инспектор бронетанковых войск Германии генерал Г. Гудериан признавал, что «в результате провала наступления „Цитадель“ мы потерпели решительное поражение. Бронетанковые войска, пополненные с таким большим трудом, из-за больших потерь в людях и технике на долгое время были выведены из строя». Потери противника в личном составе составили 245 тысяч человек, в том числе 57,7 тысячи безвозвратные. (Там же, с. 281.)