Nelson Perez Torres, 24, confessed to hitting Monika Markiewicz in the head with a rock and then throwing her into the ocean, said Francisco Alor, attorney general of Quintana Roo state, where Cozumel is located.
Markiewicz, a 32-year-old musician from Poland, worked on the Allure of the Seas cruise ship. Her body was recovered Saturday from the ocean off the southern part of the island.
An autopsy determined the cause of death was drowning, but said Markiewicz also had suffered a blow to the head.
Royal Caribbean has said Markiewicz debarked from the Allure of the Seas last Friday and did not return.
Perez Torres told investigators that he met Markiewicz at a bar in Cozumel where he worked as a busboy and that they were in a relationship, Alor said. He quoted the suspect as saying the two were arguing when he pushed her against some rocks, hit her in the head with a stone and threw her in the ocean.
Perez Torres, 24, told investigators it was the third time he had seen Markiewicz, Alor said.