A Cathay Pacific flight from Australia to Hong Kong was diverted to Indonesia over an engine fault that a passenger said sent flames streaming from a wing and caused panic on board.

The twin-engine Airbus A330 which left the west coast city of Perth shortly before midnight on Thursday, carrying 254 passengers, was diverted to Denpasar on Bali due to an "engine defect", the Hong Kong-based airline said.

The engine was shut down and emergency landing was declared. Fire services met Flight CX170, which landed safely, the airline said. No one was injured.

Passenger Joel Sirna said passengers were awoken by a loud noise then shuddering off the Bali coast.

"Mid-flight, we heard a loud bang and the plane started to shake," Sirna told Perth Radio 6PR from Denpasar.

"All the lights went out and I looked to the window and have just seen some flames and some sparks - the wing and the motor were on fire," he said.

But Cathay Pacific said there had been no fire on board.

"There were reports that some passengers saw sparks and flames from outside the window. We can confirm that what witnesses saw was a light due to the engine failure, not a real fire," the airline said.

Mr Sirna said some passengers were very distressed and others tried to calm them down.

"There were a few screams," he said.

Cathay Pacific said it was investigating the incident.

Sign up to our free newsletters

Get the best updates straight to your inbox:
Please select at least one mailing list.

You can unsubscribe at any time by clicking the link in the footer of our emails. We use Mailchimp as our marketing platform. By subscribing, you acknowledge that your information will be transferred to Mailchimp for processing.