В ночь с 17 на 18 сентября войска Белорусского фронта начали Виленскую операцию. Охватив Вильно с севера частями Полоцкой группы и с юга Минской, 18 сентября в 11.30 танковые части ворвались в город. В плен было взято 10 тысяч польских военнослужащих. К утру 19 сентября войска фронта вышли на линию литовской границы Вильно—Лида—Волковыск—Ружаны—Ивацевичи. После этого командование приостановило движение двух правофланговых армейских групп, приказав выставить стрелковые заставы на литовской и латвийской границах. Для установления связи с германскими войсками на линию Сопоцкин—Белосток выдвигались передовые части. Бобруйская группа овладевала Кобрином и также устанавливала связь с германскими соединениями. С вечера 19 сентября войска Белорусского фронта приступили к выполнению этой директивы. 22 сентября в ходе массированных атак они овладели Гродно.
21—22 сентября войска вошли в соприкосновение с германской армией и в соответствии с соглашением между представителями СССР и Германии об установлении согласованной линии части вермахта начали отход на запад, а РККА, держа дистанцию в 25 км, стала выдвигаться на демаркационную линию. К 30 сентября войска Белорусского фронта полностью выполнили поставленную перед ними задачу.
Войска Украинского фронта перешли границу в 5.00 17 сентября и, не встречая серьезного сопротивления, стали быстро продвигаться вперед. Наиболее широким — в 230 км — фронтом наступала Шепетовская (переименованная в Северную) группа, имея главные силы на левом фланге (четыре стрелковые дивизии с танковой бригадой). К исходу дня они форсировали р. Горынь и 18 сентября заняли Ровно.
Восточная армейская группа (ВАГ), захватив волочиский мост в 5.00, форсировала р. Збруч и перешла в решительное наступление по всему фронту. В боевом приказе ВАГ констатировалось: «Противник, не оказывая серьезного сопротивления, в течение 17.9.39 отходил в западном направлении, оставив Тарнополь». Второй кавалерийский корпус вышел на р. Серет и захватил переправу северо-западнее Тарнополя. 18 сентября был занят Золочев.
Наступление Южной группы началось форсированием р. Збруч. Разбив польскую пограничную бригаду и отряды КОП, войска устремились на запад, форсировали р. Серет и к концу дня овладели г. Чортковом, вышли на р. Стрыпа от ее устья до местечка Золотники. Левый фланг группы продвинулся до р. Днестр. В районе Чорткова в плен было захвачено около 5 тысяч польских солдат и офицеров.
В итоге первого дня операции войска Украинского фронта углубились на 70-100 км, овладев Ровно, Коломыей, Тарнополем, Чортковом. На следующий день, по сводке Генштаба РККА, они заняли железнодорожный узел Сарны, г. Луцк, Станиславов, Галич, Красное, Бучач. При захвате Дубно было взято в плен 5800 солдат и 500 офицеров, а в районе Луцка — 9 тысяч, из них 1 тысяча — офицеры. При овладении Галичем Южная группа взяла в плен до 20 тысяч поляков. 19 сентября советские части вошли в Сокаль, Броды, Бобрку, Рогатин, Долину, вышли на окраины Львова. В соответствии со сводкой Генштаба РККА с 17 по 21 сентября в плен было захвачено 120 тысяч человек.
Через два часа после перехода Красной Армией польской границы немецкие войска получили приказ «остановиться на линии Сколе—Лемберг—ВладимирВолынский-Белосток», о чем немедленно было сообщено в Москву.
Сближение позиций двух армий побудило ускорить переговоры об установлении демаркационной линии, для чего в Москву 19 сентября прибыла военная делегация из Берлина. С советской стороны в них приняли участие Ворошилов и Шапошников. 20 сентября была установлена линия по р. Писса, Нарев, Висла, железной дороги вдоль р. Сан, а на следующий день подписан протокол, зафиксировавший порядок и временные параметры отхода немецких войск на запад до установленной демаркационной линии, который должен был завершиться к 4 октября.