The US Geological Survey (USGS) said the quake's epicentre was in the ocean south of Bali's capital Denpasar, but the Hawaii-based Pacific Tsunami Warning Center said there was no current tsunami warning in effect.
Strong shaking was felt for several minutes in the main tourist district of Kuta, said Endro Tjahjono from the Bali office of Indonesia's Meteorology and Geophysics Agency.
"There was panic – everyone ran out of the buildings. When we returned to our office building, we saw some cracks on the wall and plaster had come off the walls," he told AFP.
The epicentre was measured at 61.3 kilometres deep, some 130 kilometres south-southwest of Bali's capital Denpasar, said the US seismologists, who measured the magnitude at 6.0.
Indonesia's Meteorology and Geophysics Agency measured the undersea quake at 6.8 magnitude and put the quake's depth at just 10 kilometres, but said it was unlikely to cause a tsunami.
There were no reports of injuries but several hospital buildings suffered light damage, Indonesian National Disaster Management Agency spokesman Sutopo Purwo Nugroho said in a text message.
An AFP reporter said the roof of Kasih Ibu hospital was damaged and dozens of patients were evacuated from higher floors to the first floor.
The quake was also felt in neighbouring areas such as Surabaya, Blitar and Malang cities in east Java.
Stephanie Fleming, a Briton who works for a tourism company in the Seminyak area close to Kuta, said her office shook violently for around a minute, sending all the workers there into the street in panic.
"It happened so quickly. Everything was shaking and the doors were banging open and shut. We didn't really know what to do so we all ran out onto the street," she said.
"It looked like a wall in our office was about to fall down, but all the structures outside seem more or less intact."
Indonesia sits on the Pacific "Ring of Fire", where the meeting of continental plates causes high seismic activity, and is frequently hit by earthquakes.