Tehuacan sits on the main highway between Puebla (120 km northwest) and Oaxaca City (240 km southeast). ADO and other first-class bus lines run frequent services from both cities; the journey from Puebla takes about 1.5–2 hours, from Oaxaca about 3.5 hours. The bus station is a short taxi ride from the centre.
There is a small airport at the edge of town (Tehuacan National Airport), but scheduled commercial flights are limited. Most visitors arrive by bus from Puebla or Oaxaca, using Tehuacan as a stop on the route between the two.