The overboard passenger was traveling on the Oasis of the Sea, operated by Royal Caribbean, off the coast of Cozumel, Mexico, during a seven-night cruise that departed from Port Everglades, Florida, Royal Caribbean said in a statement.
He fell overboard sometime in the early morning hours of Jan. 8, officials said.
At about 6:30 a.m., he was then spotted by a Disney Magic cruise ship and picked up in a lifeboat, witnesses said. Disney confirmed the rescue but did not release any other details about the event.
Disney is the parent company of ABC News.
Royal Caribbean said in a statement that company officials "are grateful for the other ship's assistance," but did not give further details. It was not clear how long the 22-year-old man was in the water.
Scott Campbell, a passenger on the Disney cruise, told ABC News he was on his balcony with his daughter when he heard the man yelling for help at 6:30 a.m.
"I thought it was a weird-sounding bird," said Campbell, who quickly realized it was a man calling for help. He estimated the man was about 20 to 30 feet from the boat in rough and choppy water.
"I'll never forget the scream, 'Somebody help me,'" Campbell recounted to ABC News.
Campbell said he immediately yelled "man overboard" and ran down three flights of stairs to the guest services desk because he knew someone would be in early.
"It's instinct," he said. "I don't remember leaving my balcony and ending up on level three."
Campbell said crew members immediately swung into action and threw down flotation devices to the man within seconds as the ship passed him.
Video of the rescue scene taken by fellow Disney cruise ship passenger David Hearn, of Marietta, Georgia, shows a small orange life boat travelling through high waves to pick up the man.
After hearing an on-board announcement about a man overboard, Hearn ran up to the deck to see the rescue operation, he told ABC News.
"He was incredibly lucky," Hearn said. "If we had been a little bit further away we never would have heard him screaming."
Hearn said he did not see the Royal Caribbean ship on which the man had been a passenger and the company did not immediately respond to questions about when its crew realized the passenger had gone overboard.
The rescued man appeared to be in "surprisingly good shape," Hearn said, and was able to swim to the life boat as it came closer. The man stayed on the ship until the Disney vessel docked in Cozumel, about a mile away from the rescue, Hearn said, noting the man was transported on stretcher to a waiting ambulance.
"He was waving to everyone," Hearn said.
A spokesman for U.S. Coast Guard said it was not involved in the rescue because it happened off the coast of Mexico and it was not called in for additional help.