Весной 1175 г. Фридрих I после неудавшегося штурма Алессандрии начал осаду крепости. Войско Ломбардской лиги в свою очередь окружило отряды императора. Полной победы, однако, тогда не удалось добиться ни одной из сторон, но через год, 29 мая 1176 г., в исторической битве при Леньяно император потерпел решительное поражение от объединенных сил городских ополчений (они состояли преимущественно из рыцарей и пополанов Милана и Бреши), которые лига выдвинула против профессионального войска Фридриха I. Император во время сражения был сбит с лошади и исчез в суматохе, оставив на поле боя свой меч и знамя, а его рыцари в панике разбежались. Одержав столь убедительную решающую победу над Фридрихом I, итальянские города-коммуны отстояли свою независимость. Выиграло и папство, поскольку после битвы при Леньяно многие вассалы императора перешли на сторону папы. Фридрих I не решился на новый поход в Италию. В 1177 г. он подписал соглашение, в котором признал верховную власть папы и отказался от всех преимуществ, завоеванных в предыдущих походах. В последующие годы шли длительные переговоры об условиях мира, который был заключен в Констанце в 1183 г.
Мирное соглашение юридически закрепило победу итальянских городов. Ронкальские постановления 1158 г. отменялись. Городские коммуны признали суверенитет императора и некоторые его права – на разбирательство и решение судебных дел высшей юрисдикции, на постой войска с обеспечением его провиантом, на утверждение, по сути формальное, избранных в коммунах консулов. В свою очередь города приобрели чрезвычайно широкие полномочия. Им предоставлялось право избирать всех магистратов, чеканить свою монету, осуществлять суд по всем гражданским делам, а также по уголовным делам низшей юрисдикции.