На 13 июля 1944 года линия фронта в Западной Украине проходила по линии Ковель -Тернополь — Коломыя. Немецкое командование отдало приказ о строительстве трёх укрепленных линий, но из-за стремительного наступления советских войск было построено всего две. В период с апреля по июнь 1944 года советское командование перегруппировало части Красной Армии по всей ширине 500-км фронта с целью подготовки стратегической наступательной операции, которая получила название Львовско-Сандомирской. Целью операции было овладение Западной Украиной и Южной Польшей. Согласно замыслу советского командования, предусматривалось нанесение двух концентрирующих ударов с целью прорыва немецкой линии укреплений: удар 3-й гвардейской и 13-й армиями с юга Волыни в направлении на Раву-Русскую, и удар 60-й и 38-й армиями из района Тернополя в направлении Львова. После прорыва фронта в коридоры должны войти бронетанковые и механизированные дивизии с целью окружить и уничтожить немецкие войска в районе города Броды. Начало наступления назначено на 13 июля.
Против Красной Армии стояла немецкая группа армий «Северная Украина» со штабом во Львове. Она была значительно ослаблена из-за переброски 6 дивизий на белорусский фронт, где немецкие войска потерпели тяжелое поражение. В апреле 1944 года пост командующего «Северной Украины» занял генерал-фельдмаршал Модель. Успешные военные операции советских войск на Украине и в Белоруссии привели к значительным потерям вермахта. Недостаток живой силы на фронтах заставила немецкое командование направить дивизии, сформированные из национальностей, проживающих на территории СССР. В мае в Нойхаммере завершилось формирование 14-й гренадерской дивизии Ваффен СС «Галичина». 28 июня 1944 года по приказу командующего группой «Северная Украина» генерал-фельдмаршала Вальтера Моделя дивизия была введена в состав 13-го корпуса 4-й танковой армии, которая держала оборону 160-километровом участке фронта у города Броды. Дивизия «Галичина» заняла вторую линию обороны фронта длиной 36 км. Боевой состав дивизии превышал 15 тысяч человек. Силы тех немецких частей, которые не успели покинуть фронт, составляли до 2 500 солдат, а отступавшие части не были достаточно боеспособны. Перед началом битвы дивизия располагала 50 танками и не имела прикрытия с воздуха.
Карта-схема битвы за Броды.
Солдаты дивизии СС «Галичина».
13 июля войска 1-го Украинского фронта перешли в наступление на рава-русском и львовском направлениях. Части 3-й гвардейской и 13-й советских армий прорвали тактическую оборону немцев и к 15 июля продвинулись на глубину до 20 км. 16 июля в сражение была введена конно-механизированная группа, а с утра 17 июля — 1-я гвардейская танковая армия. В результате упорных боёв за 2-ю оборонительную полосу, куда из резерва были выдвинуты немецкие 16-я и 17-я танковые дивизии, к исходу 16 июля вся тактическая зона немецкой обороны была прорвана на глубину 15-30 км. 17 июля войска 1-го Украинского фронта вступили на территорию польской Галиции.
На львовском направлении ситуация складывалась более удачно для немецких войск. Создав ударную группировку из двух танковых дивизий, немецкие войска отбили наступление советских 38-й и 60-й армии и с утра 15 июля провели контрудар двумя танковыми дивизиями из района Плугов, Зборов, потеснив тем самым советские войска на несколько километров. Советское командование усилило авиационные и артиллерийские удары на этом направлении и 16 июля ввело в сражение 3-ю гвардейскую, а затем 4-ю танковые армии. Танковые армии вводились в узкий коридор (шириной 4-6 км и длиной 18 км), образованный ударом 60-й армии. Командующий 3-й гвардейской танковой армии генерал П. С. Рыбалко 16 июля провёл свою армию в этот коридор, а 17 июля через этот проход прошла вся 4-я танковая армия генерала Д. Д. Лелюшенко. Ввод в сражение двух танковых армий на такой узкой полосе с одновременным отражением контратак является единственным случаем в истории советских операций Великой Отечественной войны. 17 июля 1944 года город Броды был освобождён советскими войсками.
К исходу 18 июля немецкая оборона была прорвана на обоих направлениях на глубину 50-80 км в полосе до 200 км. Советские войска форсировали Западный Буг и окружили в районе Броды группировку, насчитывавшую до восьми дивизий, в том числе и 14-ю гренадерскую дивизию СС «Галичина». После выхода советских войск на подступы ко Львову командующий фронтом решил главные усилия сосредоточить на львовско-перемышльском направлении, чтобы завершить разгром противостоящей группировки противника и овладеть городами Львов и Перемышль. Одновременно прилагались усилия к тому, чтобы быстрее завершить уничтожение бродовской группировки и форсировать развитие наступления на станиславском (Ивано-Франковск) направлении.
Войска 60-й и 13-й армий при авиационной поддержке 2-й воздушной армии вели напряжённые бои с целью ликвидации окружённой в районе Бродов группировки. К 22 июля группировка была ликвидирована, около 30 тысяч немецких солдат было убито, свыше 17 тысяч попало в плен.
Немецкие военнопленные, захваченные у Брод.
Одновременно с боями по уничтожению Бродовской группировки немцев войска 1-го Украинского фронта продолжали развивать наступление на запад. К исходу 23 июля войска фронта вышли на Сан, танковые части форсировали реку и захватили плацдармы севернее и южнее Ярослава. Попытка советских войск овладеть Львовом с ходу танковыми армиями закончилась неудачно, в результате чего командование приняло решение взять город силами 60-й и 38-й армий, а танковым армиям обходить город с севера и юга. К 27 июля советские войска при поддержке польских партизан заняли города Львов и Перемышль. На Станиславском направлении части 1-й гвардейской и 18-й армии 24 июля заняли Галич, 27 июля — Станислав.
К 27 июля завершился первый этап операции. Группа армий «Северная Украина» понесла большие потери и была рассечена на две части, между которыми образовался разрыв до 100 км.
Разгром 13-го корпуса немцев создал 1-му Украинскому фронту советских войск благоприятные условия для наступления на Львов, и в августе 1944 года полностью была освобождена Западная Украина. При этом Бродовская битва сыграла неоценимую роль для сохранения самого Львова: за время битвы немецкие части покинули город и боев во Львове почти не было.