Police say the bus passengers were between nine and 77 years old. The child was not among the injured.
Authorities say the Spanish-registered bus was travelling from Portimao, a city 200 kilometers (120 miles) south of the Portuguese capital of Lisbon, to nearby Faro airport on Wednesday when it crashed around 8 a.m.
The collision crunched the front of the bus, and emergency services had to cut three people out of the wreckage. The injured were taken to Faro hospital.
The accident happened in dry, sunny weather. Police said they have opened an investigation.
Copyright 2018 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.