The accident occurred last evening in Martankhurd village of Kallar Kahar tehsil.
The bus was reportedly carrying 45 passengers when it went off the road and fell into a 50-foot deep ravine, police said.
Among the dead, 15 people including three children and four women were of the same family, Geo TV reported.
The injured were shifted to three different medical facilities, including Lillah Hospital, Fauji Foundation Hospital in Kallar Kahar and to a basic health unit in Buchal Kallan, a town near the accident site.
Kallar Kahar's salt range on the Lahore-Islamabad stretch has been the site of several fatal accidents in the past due to the hilly terrain and sharp bends on the road.