22 февраля 1847 года Санта-Анна лично отправился на север с 20-тысячным войском, чтобы сразиться с Тейлором. Тейлор окопался на горном перевале недалеко от имения Буена-Виста с 4600 солдатами. Санта-Анна страдал от дезертирства по пути на север и прибыл только с 15 тыс. уставших солдат. В ту же ночь от потребовал от американцев сдаться и получил отказ. На следующее утро Санта-Анна атаковал американские позиции с фланга, отправив свою кавалерию и некоторую часть пехоты вверх по крутому склону, из которых состоял перевал, тогда как пехотное подразделение атаковало по центру вдоль дороги, ведущей в Буена-Висту. Произошло яростное сражение, во время которого американцы были почти подавлены, но всё же спасены артиллерийским огнём капитана Брекстона Брэгга и конными миссисипскими стрелками Джефферсона Дэвиса. Потерпев обескураживающее поражение, Санта-Анна отступил следующей ночью, оставив Тейлору контроль над Северной Мексикой. Тейлор позже использовал Битву при Буена-Виста, как центральный пункт своей успешной президентской кампании 1848 года.
Тем временем, вместо усиления армии Тейлора для продолжения наступления, президент Полк отправил вторую армию под командованием Уинфилда Скотта, которого доставили морем в порт Веракруз, чтобы он начал вторжение в главные районы Мексики. Полк не доверял Тейлору, который, как он полагал, проявил некомпетентность в битве при Монтеррее, согласившись на перемирие, и кроме того мог рассматривать его как политического соперника в Белом Доме.
Скотт произвёл первое в истории США крупное десантирование при подготовке к осаде Веракрус. Отряд из 12 тыс. добровольцев и солдат успешно разгрузили припасы, оружие и лошадей недалеко от городских стен. В отряде также находились Роберт Ли и Джордж Мид. Город защищал мексиканский генерал Хуан Моралес с 3400 человек. Мортиры и военно-морские орудия (командор Мэттью Пэрри) использовались для разрушения городских стен и психологического воздействия на защитников. Город отвечал как мог своей собственной артиллерией. В результате длительный огневой вал сломил волю мексиканской стороны к сопротивлению численно превосходящему противнику, и город был сдан после 12-дневной осады. Американцы потеряли 80 человек, тогда как мексиканцы — около 180 человек убитыми и ранеными, половину из которых составляло гражданское население. Во время осады американцы начали умирать от жёлтой лихорадки.
Затем Скотт двинулся на запад в сторону Мехико с 8500 здоровых бойцов, в то время как Санта-Анна устанавливал оборонительные позиции в каньоне вокруг главной дороги на полпути к Мехико в районе деревушки Серро-Гордо. Санта-Анна расположился в окопах с 12 тыс. солдат и артиллерией, нацеленной на дорогу, вдоль которой, как ожидалось, должен пройти Скотт. Однако Скотт послал вперёд 2600 драгун, и мексиканская артиллерия преждевременно открыла огонь и раскрыла свои позиции. Вместо того, чтобы двинуться по главной дороге, войско Скотта пошло через дикую местность на север, расставляя свою артиллерию на возвышенностях и потихоньку обходя мексиканцев с фланга. Хотя к тому времени Санта-Анна был осведомлён о позициях американцев, его войско было неготово к последовавшей атаке. Мексиканская армия была разбита. Американцы потеряли 400 человек, а мексиканцы более 1000, и 3000 попало в плен.
В мае Скотт достиг Пуэблы, в то время второго по величине города Мексики. По причине враждебности жителей к Санта-Анне, город сдался без сопротивления 15 мая. Мехико оказался открыт после битвы за Чапултепек и позже был захвачен.
Договор Гуадалупе-Идальго, подписанный 2 февраля 1848 года, положил конец войне и дал США неоспоримый контроль над Техасом, а также над Калифорнией, Невадой, Ютой и частями Колорадо, Аризоны, Нью-Мехико и Вайоминга. Взамен Мексика получила 18 млн. 250 тыс. долл., что эквивалентно 627 млн. 500 тыс. долл. по курсу середины 2000-х гг. Статья X была вычеркнута из договора, когда он ратифицировался Сенатом США. Эта статья гарантировала, что США признают мексиканских и испанских землевладельцев и что мексиканцы, живущие на захваченных землях, получат равные права с американскими гражданами.
Мексика потеряла более 500 тысяч квадратных миль (1,3 млн квадратных километров), то есть почти половину своей территории. Война также вызвала чувство национального единения в Мексике, которое утратилось с момента окончания войны за независимость в 1821 году.
Война также привела к появлению нового класса политиков в Мексике, которым удалось прервать господство Санта-Анны над Мексикой и в конечном счёте провозгласить либеральную республику в 1857 году. Одним из первых деяний республики было принятие нескольких законов, которые способствовали колонизации обширных и малонаселённых северных мексиканских штатов, чтобы таким образом избежать дальнейших территориальных потерь.
Аннексированные территории населяли примерно 1000 мексиканских семей в Калифорнии и 7000 семей в Нью-Мехико. Некоторые вернулись обратно в Мексику, а подавляющее большинство осталось и стало гражданами США.
За месяц до конца войны президент Полк был раскритикован Палатой представителей в поправке к резолюции. Критиковали и генерала Тейлора за "войну необязательную и неконституционно начатую президентом Соединённых Штатов". За этой критикой, в которой важную роль играл конгрессмен Авраам Линкольн, последовала тщательная проверка Конгрессом первопричин войны, включая фактические сомнения в претензиях, высказанных президентом Полком.
На голосовании, следуя курсу партии, все виги поддержали поправку. Атака Линкольна испортила его политическую карьеру в Иллинойсе, где война была популярна, и Линкольн не прошёл перевыборы.
В большинстве штатов победа и приобретение новых земель породила волну патриотизма (страна также получила южную половину Орегона согласно договору 1846 года с Великобританией). Победа, казалось, осуществила веру граждан в «предназначение» их страны. В то же время виг Ральф Валдо Эмерсон отвергал войну "как средство достижения «предназначения» Америки". Он признавал, что "большинство великих свершений в истории осуществлены постыдными средствами". Хотя виги были против войны, они сделали Закари Тейлора своим кандидатом в президенты на выборах 1848 года, превознося его армейскую исполнительность, но в то же время приглушая критику в его адрес по поводу самой войны.
В 1880-х Улисс Грант, служивший под командованием Скотта, назвал этот конфликт злонамеренной войной, которая низвела на Соединённые Штаты кару небесную в форме гражданской войны:
Со времен американо-мексиканской войны прошло много, очень много времени. Соединенные штаты Америки постепенно стали сверхдержавой, гегемоном мира. Мексика же скатилась к уровню второразрядных стран, поставщика дешевой рабочей силы в США. На протяжении всего этого периода в Мексике не нашлось лидера, что смог бы вернуть утраченные земли. Но это не значит, что такого не найдется в будущем. Сейчас северная Мексика — земля наркомафии, земля войны и террора. А на всякой войне — рождаются военачальники. Рождаются герои…