All 1350 passengers aboard were evacuated, Egypt's transport minister told Aljazeera, but two were killed and 38 injured in a stampede after they were rescued.
The ship was struck by the Cypriot-registered Jebal Ali at 7.30pm (0530 GMT) near Port Tawfiq, about 130km east of the Egyptian capital, Cairo, port and police officials said.
Twenty launches went to the scene of the collision and helped to save passengers from the damaged ship, which later sank, said a security source in the Egyptian town of Suez.
"We concentrated on saving lives. The boat that carried people has sunk now. Thank God that we moved all the people from there," Transport Minister Essam Sharaf said.
The passenger ship, the Al Salam 95, which is owned by the Egyptian company el-Salam Maritime Transport, was sailing from the Saudi port of Jedda on Monday after the passengers performed the umra, or lesser pilgrimage, in Makka.
The company's website says the vessel has a gross tonnage of 5857 tons and room for 2221 passengers.
The collision took place three hours' sailing time south of Suez, the sources said.