15 марта началась Верхне-Силезкая наступательная операция Красной Армии.
План операции предусматривал одновременное наступление по сходящимся направлениям двух ударных группировок фронта с целью окружения части немецких войск в районе Оппельна. В первую группировку, развёрнутую севернее Оппельна, входили: 21-я армия, 4-я танковая армия и 34-й гвардейский стрелковый корпус. Южнее Оппельна была сосредоточена вторая группировка, состоящая из 59-й и 60-й армий, 93-го стрелкового, 31-го танкового и 7-го гвардейского механизированного корпусов.
Наступление ударных группировок 1-го Украинского фронта началось утром 15 марта после 40-минутной артиллерийской подготовки. Встретив упорное сопротивление, советские войска к исходу дня сумели вклиниться в оборону противника на 8-10 км. При этом танковые части, действовавшие в составе как северной так и южной группировок понесли серьёзные потери. Так 7-й механизированный корпус потерял четверть, а 31-й танковый корпус — треть своих танков[5]. Впервые советские танкисты столкнулись с массированным применением обороняющимися последних модификаций фаустпатронов — панцерфаустов, которые были особенно эффективны в ходе боёв в населённых пунктах. Чтобы парировать удар 1-го Украинского фронта и не допустить его выход к городу Нейсе немецкое командование стало перебрасывать в район сражения новые соединения. 16 марта разгорелись ожесточённые бои между наступавшими советскими и контратаковавшими их немецкими войсками. Несмотря на это, к исходу 17 марта тактическая зона обороны немецких войск была прорвана и в образовавшуюся брешь устремились подвижные соединения ударных группировок: 10-й гвардейский танковый и 7-й гвардейский механизированный корпуса. Днём 18 марта они встретились в районе города Нёйштадта, замкнув кольцо вокруг оппельнской группировки вермахта. В котле оказались 168-я и 344-я пехотные дивизии, 20-я пехотная дивизия СС и часть 18-й моторизированной дивизии СС[5]. 19 марта немецкое командование предприняло первую попытку деблокировать окружённых силами танковой дивизии «Герман Геринг». На следующий день для этой цели были привлечены уже более крупные силы: 10-й армейский корпус, 20-я танковая и 45-я пехотная дивизии. Немецкое контрнаступление было встречено тремя советскими корпусами: 118-м стрелковым, 6-м механизированным и 4-м гвардейским танковым. Пока советские соединения действовавшие на внешнем фронте окружения отбивали немецкие контрудары, главные силы 21-й армии к вечеру 20 марта фактически завершили ликвидацию окружённой немецкой группировки. 24 марта в результате стремительного наступления и после напряжённых уличных боёв части 21-й и 4-й танковой армий овладели городом Нейсе.
Следующим и последним крупным населённым пунктом, который предстояло взять в ходе операции был город Ратибор. На этом направлении действовала 60-я армия генерал-полковника А. П. Курочкина. Однако наступление на этом направлении развивалось чрезвычайно трудно. 22 марта погодные условия позволили авиации 2-й воздушной армии возобновить поддержку атакующей советской пехоте. Несмотря на это немецкие части оборонялись с большим упорством. Кроме того, немецкое командование перебросило с других направлений и ввело в бой 8-ю и 17-ю танковые дивизии. В сложившейся обстановке, командующий 1-м Украинским фронтом решил усилить наступающие части 60-й армии двумя корпусами 4-й гвардейской танковой армии. Это положительно сказалось на темпах советского наступления. 24 марта 38-я армия соседнего 4-го Украинского фронта возобновила наступление на моравско-остравском направлении, создав угрозу окружения немецкой группировки в районе Рыбника и Ратибора и тем самым изменив оперативную обстановку в пользу Красной Армии. 27 марта 60-я армия взяла Рыбник. Затем, в течение двух дней 29 и 30 марта советская авиация наносила массированные бомбовые и штурмовые удары по позициям немецких войск в районе Ратибора. Для усиления огневой мощи наступающих в район Ратибора были переброшены 17-я и 25-я артиллерийские дивизии прорыва. 31 марта после мощной артиллерийской подготовки к решающему штурму города приступили 15-й и 106-й стрелковые корпуса 60-й армии. Их поддерживали танкисты 31-го танкового корпуса и армии Д. Д. Лелюшенко. Не выдержав натиска, противник начал отвод своих войск. Захватив Ратибор, войска 1-го Украинского фронта перешли к обороне.