The Viking Sky lost power and started drifting mid-afternoon Saturday in perilous waters two kilometres off Møre og Romsdal, prompting the captain to send out a distress call.
At that stage, the authorities decided to launch a helicopter airlift in very difficult conditions rather than run the risk of leaving people on board.
“We would rather have the passengers on land rather than on board the ship,” police chief Tor Andre Franck said.
By early Sunday, the crew had managed to restart three of its four engines.
The vessel was making slow headway at two to three knots off the dangerous, rocky coast and a tug would help it towards the port of Molde, about 500 kilometres northwest of Oslo, officials said.
Five helicopters were scrambled along with coastguard and other rescue vessels.
Police said 338 of the 1,373 people on board had so far been taken off by helicopter, with each chopper able to take 15-20 people per trip.
The airlift was continuing early Sunday, emergency services spokesman Per Fjeld said.
“I have never seen anything so frightening,” said one of the passengers who was rescued, Janet Jacob.
“I started to pray. I prayed for the safety of everyone on board,” she told the NRK television channel.
“The helicopter trip was terrifying. The winds were like a tornado,” she added.
Pictures in media reports showed passengers on board as the boat rocked up and down.
“We were sitting down for breakfast when things started to shake… It was just chaos,” said another passenger, American John Curry, as quoted in Norwegian by media.
The Viking Sky sent out a distress signal due to “engine problems in bad weather”, southern Norway's rescue centre said earlier on Twitter.
The ship was travelling south en route from Tromsø to Stavanger when it got into trouble in an area that has claimed many vessels.
“It is dangerous to encounter engine problems in these waters, which hide numerous reefs,” said Tor Andre Franck, the head of the police operations.
A reception centre has been set up in a gym on shore to accommodate the evacuees, many of whom are from the US and Britain.
Police said 17 people had been taken to hospital.
“For the moment everything appears to be going well,” said a rescue centre spokesman, Einar Knutsen.
The area where the ship got into problems, known as Hustadvika, is notoriously difficult to navigate.
The shallow, 10 nautical mile section of coastline is known for its many small islands and reefs.
“Hustadvika is one of the most notorious maritime areas that we have,” Odd Roar Lange, a journalist specialising in tourism, told NRK.
In their time, the Vikings hesitated to venture into the Hustadvika, preferring instead to transport their boats by land from one fjord to another.
Operated by the Norwegian firm Viking Ocean Cruisers, the Viking Sky is a modern cruise ship launched in 2017 with a capacity of 930 passengers plus crew.
In addition to US and British nationals, there were also passengers from 14 other countries on board, Fjeld said.