Битва за Монтеррей (21–24 сентября 1846 года) была кровопролитной, и обе стороны понесли в ней достаточно серьезные потери (в частности, американцы потеряли 400 человек, в том числе одного генерала и более 30 офицеров). Потом в Монтеррее американцы устроили бесчинства: забирали зерно, скот, расстреливали протестующих крестьян, сожгли и разрушили часть города.
16 ноября генерал Тейлор занял Сальтильо.
Затем американцы предприняли две неудачные попытки захватить порт Альварадо. 10 ноября эскадра под командованием Мэтью Пери заняла один из крупнейших мексиканских портов на берегу Мексиканского залива – Тампико. Хотя порт защищался гарнизоном из 4000 человек, тремя военными кораблями и был оснащен 25 орудиями, генерал Антонио де Санта-Анна приказал солдатам покинуть город.
В конце января 1847 года генерал Антонио де Санта-Анна двинулся на север навстречу Закари Тейлору, стоявшему с 6000 человек у Сальтильо. Узнав о приближении мексиканцев, генерал Тейлор немного отступил и занял выгодную позицию у асьенды Буэна-Виста. Мексиканская армия насчитывала примерно 18 000 человек, но во время похода, в результате болезней и дезертирства, она уменьшилась на тысячу человек. К моменту сражения солдаты генерала де Санта-Анны, преодолевшие много километров по безводной пустыне, были совершенно измучены, проведя несколько дней без воды и провианта.
Битва произошла 22–23 февраля 1847 года в узком горном проходе на дороге из Сан-Луис-Потоси в Сальтильо. В первый день мексиканцам удалось обойти противника с левого фланга, а их кавалерия сумела проникнуть глубоко во вражеский тыл. К девяти утра 23 февраля левое крыло генерала Тейлора было практически разбито, и американские войска стали отступать к Буэна-Виста. Некоторые части отошли к Сальтильо. Положение американцев стало угрожающим, но тут из Сальтильо подоспело подкрепление, и это позволило им вернуть потерянные позиции. Американская артиллерия наносила противнику серьезный урон, однако к четырем часам мексиканцам удалось захватить несколько орудий и три знамени. Но в восемь часов вечера генерал де Санта-Анна вдруг отступил к Сан-Луис-Потоси (позднее он объяснил это решение тем, что подошли к концу боеприпасы). Потери армии Закари Тейлора составили 723 человека убитыми, ранеными и пропавшими без вести. По американским данным, мексиканцы потеряли свыше 1500 человек. В их рядах царил беспорядок, и многие солдаты умирали от голода и болезней.
В феврале 1847 года отряд полковника Александра Уильяма Донифана двинулся с севера на Чиуауа. 28 февраля в горном проходе Сакраменто его встретил 2-тысячный отряд мексиканской национальной гвардии. Произошло сражение, после которого мексиканцы отступили в горы. Но долго продержаться в Чиуауа полковник Донифан не смог и в апреле двинулся на соединение с генералом Тейлором.
В марте в Мексике поднялось восстание против правительства, вызванное его решением продать часть церковной собственности для получения средств на дальнейшее ведение войны. Получив известие об этом, генерал де Санта-Анна, бросив бо́льшую часть своей армии, поспешил в столицу. Борьбу с мятежом возглавил Валентин Гомес Фариас, вице-президент при президенте Антонио де Санта-Анна, но после возвращения Санта-Анны, вставшего на сторону повстанцев, Фариас был изгнан, а его правительство распущено. Так генерал де Санта-Анна получил диктаторские полномочия.
Одновременно с действиями генерала Тейлора американцы начали захват Калифорнии. Коммодору Джону Слоуту был дан приказ захватить калифорнийские порты и установить блокаду побережья. А на захват Новой Мексики была отправлена армия генерала Стивена Карни. Он успешно занял город Санта-Фе, а затем Лос-Анджелес. Население Калифорнии в большинстве своем перешло на американскую сторону.
17 августа 1846 года Калифорния была присоединена к США.
А потом американцы решили произвести высадку десанта в Веракрусе, со стороны Мексиканского залива, откуда на столицу Мексики шла относительно короткая дорога.
Командующим десантом был назначен генерал Уинфилд Скотт. И он с 13-тысячной армией и мощной артиллерией из 40–50 орудий двинулся через плато Анауак на Мехико. В результате, произведя первое в истории США крупное десантирование, генерал Скотт занял Веракрус, а потом, на пути к Мехико, 18 апреля 1847 года, в ущелье Серро-Гордо разбил мексиканцев, которые потеряли от 1000 до 1200 человек убитыми и ранеными, а 3000 человек попало в плен, в том числе 5 генералов. Потери генерала Скотта составили всего 430 человек.
Потом Скотт занял Пуэблу и простоял там до августа, ожидая подкреплений. 7 августа подкрепления прибыли, и американцы двинулись на Мехико. По пути туда имело место несколько сражений, а 23 августа противодорствующие стороны заключили перемирие до 7 сентября. Начались переговоры о мире, но мексиканское правительство в конечном итоге отвергло условия американцев.
13 сентября армия США приступила к штурму замка Чапультепек – там погибло около 900 американцев.