21 сентября 1846 года получил звание капитана топографической службы. Когда началась война с Мексикой, Джонстон участвовал в осаде Веракруса, вёл разведку в ходе сражения при Серро-Гордо, где был серьёзно ранен. За храбрость, проявленную во время рекогносцировок при Серро-Гордо Джонстон 12 апреля 1847 получил временное звание майора. Впоследствии он получил постоянное звание подполковника (датированное 9 апреля) и временное звание полковника (датированное 12 апреля).