The walls and ceilings of some temples and at least one school along the coast crumbled, and witnesses told local radio and television stations the roofs of homes collapsed.
The U.S. Geological Survey said the 6.0-magnitude quake was centered 60 miles (100 kilometers) southwest of the island. It hit 36 miles (60 kilometers) beneath the ocean floor.
Although not strong enough to trigger a tsunami, the quake was felt on neighboring Java and Lombok islands, hundreds of miles (kilometers) away.
"It knocked me off my motorcycle," said one badly shaken Bali resident, Miftahul Chusna.
Candy Juliani, a public relations officer for the Sanur Beach Hotel, said terrified guests fled the building.
"We have special emergency routes for this type of situation, but everyone was so scared, they just ignored them," Juliani said.
At least 50 people were hurt, suffering cuts, broken bones and head wounds, said Wayan Sudanti, a hospital spokesman.
The patients included 12 students and three teachers injured when the ceiling of their high school caved in, said I Gede Tejo from the local disaster agency.
Indonesia straddles a series of fault lines that makes the vast island nation prone to volcanic and seismic activity.
A giant quake off the country on Dec. 26, 2004, triggered a tsunami in the Indian Ocean that killed 230,000 people, half of them in Indonesia's westernmost province of Aceh.