Тем самым союзные войска не просто усиливались, а отдавались в подчинение победоносному полководцу для решительных боевых действий против французской армии в Швейцарии, которой командовал генерал Массена. 4 сентября 1799 года Суворов был с корпусами генералов Дерфельдена и Розенберга возле Таверны у подножья Монте-Ченере. Ему оставалось три дневных перехода до Сен-Готарда.
Численность русских войск чуть превышала 16000 человек: авангард князя Багратиона – 2500 штыков при 4 орудиях, дивизия генерала Повало-Швейковского – 4400 штыков при 6 орудиях, дивизия генерала Ферстера – 3100 штыков при 5 орудиях, корпус генерала Розенберга – 6000 штыков при 10 орудиях. Каждому соединению приданы были по 20 пионеров (саперов) и до полусотни конных казаков для разведки и боевого охранения. Основная часть казаков охраняла обоз. Русских сопровождали австрийские соединения: бригады Штрауха и Уафенберга численностью соответственно 4500 и 2000 штыков.
В Таверне войска задержались из-за отсутствия провианта и вьючных животных. Того и другого ждать пришлось 5 дней. Войска выступили в поход только 10 сентября рано утром, двумя колоннами. 15-тысячная левая колонна – корпус генерала Дерфельдена (состояла из авангарда Багратиона, дивизий Повало-Швейковского и Ферстера) – шла на перевал Сен-Готард и достигла его подножья 12 сентября. Войска остановились в 10 верстах от Айроло, где занимал позиции передовой отряд французов. Суворов выжидал, пока вторая часть русских войск обойдет Сен-Готард с тыла. Правая колонна – корпус Розенберга (около 6000 штыков) – шла в обход, здесь авангардом командовал генерал Милорадович. К 12 сентября войска Розенберга подошли к селению Урзерн. Это селение находилось в тылу района обороны французской бригады генерала Гюденя численностью 4300 штыков, она стояла на пути главных сил Суворова через Сен-Готард. Силы французов занимали следующие позиции: три батальона находились на гребне перевала (их боевые порядки были выдвинуты немного вниз по склону в сторону Айроло), один батальон 67-й полубригады стоял у перевала Фурка (прикрывал дорогу на кантон Вале), два батальона располагались у Оберальпа, на перевале между долинами Тавеч и Урзерн. Боевые порядки другой бригады, генерала Луазона, численностью свыше 4200 человек, были растянуты по всей долине верхней Рейсы от Урзерна до Альтдорфа. В Альтдорфе располагался штаб генерала Лекурба (командира дивизии).
13 сентября корпус Дерфельдена тремя колоннами начал подъем на Сен-Готард. Авангард Багратиона и дивизия Швейковского шли по долине реки Тичино: Багратион по левому берегу, Швейковский – по правому. Около 2 часов дня передовые отряды Багратиона атаковали французские пикеты, затем предприняли обход оборонительной линии противника у Айроло и начали подниматься по крутому склону горы правее французских позиций. Главные силы русского авангарда стали подниматься по горному склону в обход левого фланга французов, правее Багратиона совершали обходной маневр несколько батальонов русской пехоты во главе с генералом Барановским. Им противостояло около 1000 французских стрелков, чей губительный огонь не смог остановить наступательного порыва русских гренадер. В обход правого фланга французов были направлены батальон австрийской пехоты Штрауха и полк русской пехоты Ведецкого. По дороге на Айроло в центре русских боевых порядков в колоннах продвигались дивизии Швейковского и Ферстера. Они были остановлены сопротивлением республиканцев, занявших позиции перед Айроло. Завязался упорный бой, но появление на левом фланге солдат Багратиона и Барановского заставило французов отойти назад, чтобы избежать окружения.
Французы оставили Айроло. Республиканцы укрепились на новой позиции, выше по склону, в районе Госписа; над крутым скальным поясом заняла позиции бригада Гюденя, усиленная стрелками Луазона. Дивизии Швейковского и Ферстера пошли на приступ этой практически неприступной позиции в лоб. Три атаки французы отбили с большим для себя трудом. Русские потеряли в них около 1200 человек убитыми и ранеными. В это время Багратион со своими гренадерами по крутым скалам поднимался правее места боя. Около 4 часов дня сам Суворов повел русских солдат на приступ, в это время на левом фланге французов появился отряд Багратиона, что стало ошеломляющей неожиданностью для обороняющихся. Французы оставили свои позиции и отошли за перевал, ближе к селению Госпенталь.
На поле боя к Госпенталю прибыл французский резерв – часть бригады Луазона во главе с генералом Лекурбом. Он уже было намеревался начать контратаку, как получил информацию, что у него в тылу, в районе Оберальпа, появились русские войска (корпус Розенберга). В результате Лекурб вынужден был ограничиться обороной, благо местность это позволяла.
Одновременно с основными силами Суворова на рассвете 13 сентября корпус Розенберга начал движение от селения Тавеч вверх по рейнской долине. Ему преграждали путь лишь два французских батальона. Сначала боевое охранение русских, казаки, завязали перестрелку с передовыми пикетами республиканцев. Потом в дело вступил авангард Милорадовича, вслед за ним пошел в бой полк Ребиндера и батальон Кашкина. Русская пехота быстро поднялась по склону горы вверх и атаковала французов на штыках. В это время полк Мансурова обошел позиции республиканцев справа. Последним ничего не оставалось, как бросить занимаемые позиции и отойти к озеру Оберальп и закрепиться на его берегах. Тем временем к полю боя подтянулся весь корпус, русские имели явное численное преимущество над противником. Розенберг перегруппировал свои силы и бросил их в наступление на французов. Милорадович атаковал правый фланг, Ребиндер обрушился на центр, а Мансуров – на левый фланг неприятеля. Французы отошли к селению Урзерн. Наступал вечер, высоты покрылись туманом, русские войска под его прикрытием сблизились с французами почти вплотную, ударили в штыки. Противник не выдержал натиска и в беспорядке отступил в сторону Госпенталя и Гешена, оставив победителю свою артиллерию. Французов от преследования спасла наступившая ночь. Розенберг остановил свой корпус и встал лагерем у селения Урзерн.
В это время Лекурб как мог сдерживал натиск главных сил Суворова. Упорный бой перед селением Госпенталь продолжался дотемна. С наступлением ночи французские войска и здесь оставили свои позиции и отступили к перевалу Фурка. На этом битва за Сен-Готард была завершена. Суворов (корпус Дерфельдена) встал на ночь лагерем в Госпентале. Солдаты видели бивуачные огни лагеря Розенберга у селения Урзерн, а те, соответственно, у Госпенталя – огни лагеря корпуса Дерфельдена. И те, и другие принимали своих за неприятеля; только к утру ситуация прояснилась. Потери русских составили около 2000 человек убитым и ранеными. Лекурб, не желая покидать оборонительную линию окончательно, собрал остатки своих войск и совершил ночной марш по горам в долину Гешенен. Там он занял оборонительные позиции и снова встал на пути армии Суворова.