Another six people suffered light injuries, the Greek coast guard said in a statement. The victims were identified as a German and an Italian man.
The ship asked for permission to dock in Barcelona and arrived at the Spanish port shortly after 9 p.m., the Spanish news agency Europa Press said.
There, four ambulances were waiting to take the bodies and the injured to a hospital in the city, the agency said.
No further details on the dead or the injured were immediately available. Spanish reports said the injured included a 62-year-old woman who broke both of her legs.
All television news crews were asked to leave the port late Wednesday, and it did not appear that passengers were being allowed to leave the ship.
It was unclear late Wednesday exactly where the incident took place. The Greek coast guard said the accident occurred near the French Mediterranean port of Marseille as the Cypriot-owned Louis Majesty was sailing from Barcelona to the Italian city of Genoa with 1,350 passengers and 580 crew members on board.
But the French newspaper Le Figaro and Spanish news reports said the accident happened off Capo de Begur, off the coast of Spain about 80 miles northeast of Barcelona.
Europa Press said the ship had set sail from the southeastern Spanish Mediterranean port of Cartagena earlier Wednesday, intending to stop in Barcelona but decided to continue on its journey to Genoa because of bad weather near Barcelona.
Cmdr. Bernard Celier of the French maritime authority in the southwestern city of Toulon, on the Mediterranean coast, said there had been "no signs of the least problem with the Louis Majesty."
But he noted there had been winds of over 60 miles per hour in the area.
Louis Cruise Lines spokesman Michael Maratheftis said the ship was hit by three "abnormally high" waves up to 26 feet high that broke glass windshields in the forward section.
Louis Cruise Lines' Web site says the ship is 680 feet long, and features 10 passenger decks and 732 staterooms along with various bars, pools, restaurants and shops.