Puyo proviene del vocablo kichwa PUYU que, traducido al español, significa nublado, neblina. Se cree que anteriormente a la época de la colonización, los indígenas llamaban al río que pasa por la ciudad, río Puyo, que quería decir río nublado, debido a que este lugar la presencia de la neblina era abundante y frecuente. De allí del nombre del río, se tomó el sustantivo Puyu y se le dio el nombre a la ciudad, hasta 1930 se la llamaba Puyu, pero luego poco a poco los mestizos colonos fueron definiéndola como Puyo.
Existen suficientes evidencias de que en el lugar donde hoy se asienta Puyo, quizá un poco más a la margen del río Pindo Grande, existió un pueblo de indígenas Chirapas llamados Pinduyaku (debido a la presencia de abundantes plantas de Pindo a orillas del río del mismo nombre), los mismos que eran muy amigables y con su actitud facilitaban el paso de misioneros, encomenderos y comerciantes hacia Canelos y más allá, motivo por el que los indígenas Chirapas del otro lado del Pastaza no los querían, a tal punto que decidieron desaparecerlo al pueblo de Pindoyaku y acabar con todo vestigio de vida humana. Este hecho lo cristalizaron en el año de 1868. Aquí un grupo conocido como ejército de indios, del otro lado del río Pastaza, capitaneados por los capitanes Sharupi y Timara, incendiaron y dieron muerte a casi toda la población de Pinduyaku. De ellos unos pocos indígenas, entre niños y uno que otro joven pudieron escapar por el Canelos Nambi (camino a Canelos).
Al iniciarse el siglo XIX, antes de la etapa republicana del Ecuador, la región de Canelos, como era conocido el territorio de la actual provincia de Pastaza, formaba parte del Corregimiento de Ambato, que se había establecido en 1797 por decisión de la Presidencia de la Real Audiencia de Quito.
Ya en la etapa republicana del Ecuador, el 29 de mayo de 1861, la Convención Nacional que redactaba una nueva constitución dictó una ley sobre la división territorial del país, en la que formó parte la provincia del Oriente, que incluía a Napo y Canelos. Dentro de la distribución de Canelos figuraban los pueblos de Canelos, Sarayaku, Lliquino, Andoas y las tribus Zapara y Jíbaros (con esta denominación eran conocidos durante el siglo XIX los actuales Shuar).
En 1897 el cantón Canelos pasó a formar parte de la provincia de Tungurahua y luego, el 13 de noviembre de 1911 se estableció el cantón Pastaza.
En 1921 la Región del Oriente fue dividida políticamente en las provincias de Napo-Pastaza y Santiago-Zamora, la primera con las jefaturas de Sucumbíos, Napo y Pastaza. Por su parte, Pastaza comprendía las parroquias de Mera y Puyo.
El 10 de noviembre de 1959 se creó la provincia de Pastaza y se designó a Puyo como capital de provincial.