В октябре того же 1846 года Макклеллан прибыл в устье реки Рио-Гранде для участия в Мексиканской войне и был включён в сапёрную роту. Он опоздал к сражению при Монтеррее, а затем примерно на месяц попал в госпиталь, заболев дизентерией и малярией. С севера Мексики он был переведён в армию Скотта, участвовал в осаде Веракруса и наступлении на Мехико, а также участвовал в сражении при Серро-Гордо в апреле 1847. 24 апреля Макклеллан получил постоянное звание второго лейтенанта. Он участвовал в перестрелке у Амазоке в мае, и в сражениях при Контрерас и Чурубуско, и штурме Чапультепека в августе. 20 августа он получил временное звание первого лейтенанта за Контрерас и Чурубуско.