Из-за сильных дождей, размывших дороги, тылы отстали и не успевали своевременно подвозить боеприпасы и горючее. Несмотря на указания Конева совершить обходное движение, Рыбалко «увлекся». До города оставалось 7–8 км, и он хорошо просматривался с наблюдательных пунктов. Командиры корпусов докладывали, что нужен еще небольшой натиск, и бригады ворвутся во Львов. На отдельных участках танкисты клиньями врезались в оборону противника, но каждый раз немцы подбрасывали к участку прорыва свежие силы и стабилизировали положение.
Основные силы 60-й армии и левофланговые дивизии 13-й армии с приданными им двумя танковыми корпусами были скованы окруженной бродской группировкой противника.
Ход операции значительно выбивался из графика, немцы, навязывая затяжные бои, сбивали темп продвижения советских войск.
20 июля генерал Катуков получил приказ повернуть 1-ю гвардейскую танковую армию на юго-запад и стремительно развивать наступление к реке Сан с тем, чтобы, форсировав ее, перехватить пути отхода противника на запад.
За это время немцы успели перебросить в район Львова со Станиславского направления части трех дивизий и укрепить здесь свою оборону. Обстановка, сложившаяся под Львовом к исходу 21 июля, уже не позволяла овладеть городом с ходу силами только танковых армий.
Опасаясь флангового удара советских войск со стороны Перемышля на юг, германское командование стало отводить со Станиславского направления на запад части 24-го танкового и 59-го армейского корпусов. Войска 38-й и правого фланга 1-й гвардейской армий, сбивая арьергарды, начали преследование. Чтобы отрезать немцам пути отхода, генерал Лелюшенко получил указание немедленно нанести стремительный удар южнее Львова на Самбор, разгромить тылы противника и не допустить отхода львовско-станиславской группировки.
К исходу 21 июля наступление войск 1-го Украинского фронта развернулось в 400-километровой полосе от Грубешува до Днестра. Соединения 1-й гвардейской танковой, 13-й армий и конно-механизированной группы Баранова, обходя Львов с северо-запада, развивали наступление к реке Сан.
К 22 июля, отразив многочисленные контратаки на внешнем и внутреннем фронте окружения, советские войска расчленили окруженную группировку на две части и полностью ликвидировали ее. По оценке Конева, в «котле» было восемь немецких дивизий. Более поздние источники указывали скромнее: «до восьми», генерал армии Лелюшенко — «до шести дивизий противника». Это ДО в количественном отношении означает около пяти дивизий — 340-ю и 361-ю пехотные, частично 454-ю охранную, корпусную группу «Ц», которую засчитали за три дивизии и 14-ю пехотную дивизию СС «Галиция». Все они были разгромлены, а первые две уничтожены почти полностью. Причем «галичан» в плен не брали. По докладу опять же командующего фронтом, ставшему официальным «историческим» источником, немцы потеряли более 38 000 человек убитыми и 17 000 пленными. Если пленных нужно было сдавать под счет, то количество «убитых» в советских источниках никогда нельзя считать достоверным. Кстати, генерал армии Д.Д. Лелюшенко вспоминает, что на рассвете 20 июля «окруженные» немцы преодолели колтовский коридор западнее Золочева и «плотными боевыми порядками» ворвались в район расположения штаба и тыла 4-й танковой армии, бои здесь длились двое суток и, конечно, «лишь немногим удалось прорваться в Карпаты». Ну, например, трем тысячам украинских эсэсовцев.
Летописцы боевого пути 3-й гвардейской танковой армии мимоходом сообщают, что немцы потеряли 25 000 человек убитыми и пленными во всей Львовско-Сандомирской операции.
Ликвидировав «котел» под Бродами, командование фронта сосредоточило основные силы для разгрома львовской группировки. Штаб фронта принял решение, используя успех армий Катукова и Пухова, ускорить обход Львова танковой армией Рыбалко с северо-запада и запада, 4-й танковой армией — с юга, а войсками 60-й армии нанести удар с востока. 38-я армия должна была продолжать энергичное наступление от Перемышля на южную окраину Львова.
Конев сообщает, что несмышленый Рыбалко наконец «уяснил смысл моего требования и приступил к перегруппировке». Оставив 56-ю гвардейскую бригаду изображать активность на торфяных болотах, 3-я гвардейская танковая армия в период с 22 по 24 июля вышла из боя, совершила 125-километровый марш-маневр, по хорошим дорогам, сбивая заслоны, главными силами обошла Львов с севера и запада и развернула наступление на двух расходящихся направлениях: на Львов — с запада силами 7-го гвардейского танкового корпуса генерала С.А. Иванова и 6-м гвардейским танковым корпусом генерала В.В. Новикова, усиленным 91-й танковой бригадой, на Перемышль — с востока. Этот маневр имел для фронта исключительно важное значение. Выход танковых войск в район Яворова и юго-восточнее от него перерезал коммуникации львовской группировки противника, которые вели на Ярослав и Перемышль.
В то время как танкисты Рыбалко совершали марш-маневр в район Яворова, 4-я танковая армия штурмовала город с юга. Конев, описывая сильно затянувшиеся бои за Львов, валит все на бестолковость подчиненных: я, мол, приказывал «обходить Львов глубже с запада». Однако тут же приводит собственные директивы, направленные Лелюшенко. 19 июля командарм получает приказ «овладеть Львовом», два дня спустя — не ввязываясь в затяжные бои, снова «стремительно выходить на Городок», а 22 июля — «главными силами армии нанести немедленно стремительный удар на Самбор» и взять его к исходу 25 июля. После этого, делая из командарма законченного дурака, Конев сообщает, что «генерал Д.Д. Лелюшенко, имея задачу наступать на Самбор, чтобы не допустить отхода противника на юго-запад, решил «по пути» частью сил ворваться во Львов». Между тем, к исходу 22 июля главные силы 4-й танковой армии вели бои на южной окраине Львова, а ее 10-й Уральский гвардейский танковый корпус «по пути» ворвался в город, где был отрезан немцами.
Армия Катукова, пройдя с боями 120 км, в этот день вышла передовыми частями к Сану севернее и южнее Ярослава, оторвавшись от стрелковых соединений 13-й армии на 50 км. В ночь на 23 июля танкисты небольшими силами форсировали реку и захватили плацдарм. Однако дальнейшее продвижение застопорилось, немцам удалось втянуть советские войска на реке Сан в затяжные бои. Высокую активность стала проявлять германская авиация, нанося удары главным образом по переправам. Лишь еще сутки спустя 1-я гвардейская танковая армия форсировала Сан севернее и южнее Ярослава. Сюда же вышли 25-й танковый корпус и войска генерала Пухова. Выход крупных танковых сил на левый берег Сана, в глубокий тыл противника, оказал большое влияние на ход борьбы за Львов.
24 июля развернулось концентрическое наступление на Львов. С востока и северо-востока наступали войска 60-й армии и 4-й гвардейский танковый корпус. Уральский танковый корпус генерала Е.Е. Белова вел уличные бои. Западнее города в район Городка вышел 7-й гвардейский танковый корпус армии Рыбалко. Однако, несмотря на приказ Конева овладеть Львовом к вечеру, сражение за него продолжалось еще несколько дней. Чтобы избежать полного окружения, вечером 25 июля германское командование начало отводить свои войска из Львова на Самбор. Утром 27 июля совместными усилиями войска 4-й и 3-й гвардейской танковых армий, 60-й и 38-й армий при поддержке фронтовой авиации и авиации дальнего действия завершили освобождение Львова.
Город обороняли 168-я и 68-я пехотные и 101-я горнострелковая дивизии.
Почти одновременно части 3-й и 1-й гвардейских танковых армий ночным штурмом взяли Перемышль и Ярослав. Город-крепость Перемышль оборонял гарнизон, насчитывавший до 3000 человек, при штурмовых орудиях и двух бронепоездах. С севера и востока Перемышль прикрыли реки Сан и Вяра, вокруг города имелось кольцо из 15 старых фортов и 25 узлов сопротивления с дотами, построенными в 1939–1941 годах. Однако немцы фортификационные сооружения к обороне не готовили и сдали их без боя. В ночь на 27 июля, окружив Перемышль, части 6-го гвардейского, 11-го гвардейского, 25-го танкового корпусов и 287-й стрелковой дивизии 13-й армии ворвались в город и к полудню следующего дня очистили его от противника.
Правда, задачу выхода к Самбору армия Лелюшенко, втянувшись в бои за Львов, не решила.
Упорные бои шли также на левом крыле фронта. Широко используя выгодные для обороны условия горной местности, германское командование стремилось удержать в своих руках коммуникации, ведущие из Львова и Станислава через Карпаты в Чехословакию и Венгрию. Но с переброской частей на львовское направление оборона здесь оказалась ослабленной. Кроме того, выход танковых армий к Львову создавал угрозу флангу и тылу группировки, действовавшей северо-восточнее Станислава. Германское командование вынуждено было спешно отводить отсюда войска на запад.