23 июня 1941 года началось одно из крупнейших танковых сражений в истории — битва в треугольнике городов Дубно — Луцк — Броды. В сражении с обеих сторон приняло участие около 3200 танков.
В этот день 10-я и 37-я танковые дивизии 15-го мехкорпуса генерал-майора И.И.Карпезо атаковали правый фланг немецкой группировки с целью разорвать кольцо вокруг 124-й стрелковой дивизии в районе Милятина. Болотистая местность и авиаудары Люфтваффе замедлили продвижение танковых дивизий, и немецкая 197-я пехотная дивизия успела организовать сильную противотанковую оборону на своем фланге. Атака небольшого числа Т-34 ввергла немцев в испуг, однако к вечеру подоспела 11-я панцерная дивизия.
24 июня 11-я панцерная дивизия продвигалась в направлении Дубно, преодолев сопротивление 37-й танковой дивизии и нанеся ей тяжелые потери. 10-я танковая дивизия, обороняясь и контратакуя, была остановлена возле Лопатина обороной пехоты немцев. В этот же день в район Бродов был направлен 8-й мехкорпус. По воспоминаниям командира корпуса генерал-лейтенанта Д.И.Рябышева, в пути было потеряно до половины легких танков (т.е. порядка 300 БТ).
25 июня 13-я и 14-я панцерные дивизии взяли Луцк и начали продвижение к Ровно. Они столкнулись с частями 9-го мехкорпуса. В то же время части сильно пострадавшего 22-го мехкорпуса заняли оборонительные позиции под Луцком вместе с 27-м стрелковым корпусом. В район Ровно прибыли 20-я, 35-я, 40-я, 43-я танковые дивизии 9-го и 19-го мехкорпусов. Они должны были атаковать 11-ю панцерную дивизию. С другого направления эту же дивизию должны были атаковать 12-я и 34-я танковые дивизии 8-го мехкорпуса.
26 июня началось советское контрнаступление. Действия мехкорпусов не координировались, к тому же не все части 9-го и 19-го мехкорпусов успели прибыть к месту боев. В сражении участвовали только танковые части при небольшой поддержке мотострелков. Им удалось перерезать дорогу Луцк-Ровно, а части 43-й танковой дивизии взяли Дубно, но лишь после того, как основная часть 11-й панцерной дивизии покинула его, следуя на восток.
Немцы, почувствовав угрозу, развернули 13-ю панцерную дивизию к югу от Луцка, вопреки первоначальному плану движения на восток. Кроме того, немцы направили 75-ю, 111-ю, 299-ю пехотные дивизии для очистки коммуникаций 11-й панцерной дивизии.
27 июня наступление 9-го мехкорпуса Рокоссовского и 19-го мехкорпуса Фекленко стало тормозиться. Их передовые части были почти уничтожены, и остальные подразделения были вынуждены отступить. Остатки передовых отрядов мехкорпусов оказались отрезанными на расстоянии порядка 10 километров. На их окончательное уничтожение была брошена 13-я панцерная дивизия, которая прошлась по ним с фланга и затем повернулась на восток в направлении Ровно.
На южном фланге немецкой группировки советское наступление развивалось несколько успешнее. Там были собраны для удара 12-я и 34-я танковые, 7-я мотострелковая дивизии 8-го мехкорпуса и 14-я кавалерийская дивизия. На пополнение 10-й танковой дивизии 15-го мехкорпуса наконец прибыла 8-я танковая дивизия из состава 4-го мехкорпуса. Однако танков в этих частях оставалось лишь около половины от первоначальной численности (порядка 800 танков). 12-я и 34-я танковые дивизии продвинулись примерно на 5 километров, но не смогли прорвать оборону 111-й пехотной дивизии.
28 июня 13-я панцерная дивизия достигла района Ровно, однако у нее не было пехотной поддержки, поскольку немцы бросили пехоту в район Дубно. 9-й и 22-й мехкорпуса смогли, отойдя от Дубно, занять оборонительные позиции севернее и юго-восточнее Луцка. Тем самым создался «балкон», задержавший группу армий «Юг» на ее пути к Киеву. Считается, что в результате этого Гитлер решил изменить стратегическое решение и направить дополнительные силы на юг, сняв их с московского направления.
28 июня части 12-й и 34-й танковых дивизий сражались западнее Дубно, однако основные танковые части пытались отойти.
Тем временем в район Острога прибыл 5-й мехкорпус, которому удалось остановить продвижение 11-й панцерной дивизии. В этот же день оборону южнее Бродов усилили части 37-го стрелкового корпуса. Но и немцы бросили на левый фланг советской обороны (в районе Львова) 9-ю панцерную дивизию. Этот маневр полностью разрушил левый фланг обороны советских частей.
К этому времени у советских танков почти не осталось боеприпасов и горючего.
Трудности переросли в катастрофу 29 июня. Утром 13-я панцерная продвигалась на восток от Ровно, в то время как советские войска отходили севернее и южнее города, параллельно движению немцев. Советские танки все чаще оставались без топлива, и немецкая пехота уничтожала остатки 12-й и 34-й танковых дивизий.
30-го июня 9-я панцерная дивизия атаковала остатки 3-й кавалерийской дивизии. Затем она отрезала 8-ю и 10-ю танковые дивизии, завершив их окружение. К этому времени командующий 6-й советской армией приказал всем своим частям отходить на позиции восточнее Львова. А немцы в это время собирали южнее Луцка части 13-й и 14-й панцерных дивизий, чтобы создать кулак для удара в направлении Житомира и Бердичева.
К 1 июля советские мехкорпуса Юго-Западного фронта были практически уничтожены. В 22-м осталось около 10% танков, в 8-м и 15-м — 10-15%, в 9-м и 19-м — около 30%.
Как считал немецкий полковник Гланц — ожесточенные, хотя и не приведшие к успеху советские контратаки задержали немецкую группу армий Юг по крайней мере на неделю. Тем самым это помогло вынудить Гитлера перенаправить часть сил группы армий «Центр» с московского направления на усиление украинского. Полковник Гланц также указывает, что пограничные сражения на Западе Украины также показали, что германские танкисты не являются непобедимыми. Это дало многим советским командирам, например Рокоссовскому, дорогостоящий, но полезный опыт ведения танковой войны.