There are 2 ways of going to Cat Ba island: Through Hai Phong city and through Halong city. However, you must still take a boat to go to the island.
Through Hai Phong city
You can come to Cat Ba island center (Cat Ba town) by going to Hai Phong city, then go by speed boat from Hai Phong (Ben Binh harbor) to Cat Bai town (about 50 minutes on boat). There is a company called Hoang Long has daily buses from Luong Yen bus station in Hanoi to go package trip (bus and boat) to Cat Ba island town. If you come from Ho Chi Minh city, there is a flight to come to Hai Phong city and then you go by speed boat to Cat Ba town.
Through Halong city
You can come to Cat Ba by going to Halong bay, then take a ferry at Tuan Chau island to reach Gia Luan harbor in Cat Ba island, then take a taxi to Cat Ba town in 30 minutes more.
Many tourists are advised to take a package tour to visit Halong bay, sleep on boat 1 night then go to Cat Ba to sleep one more night in Cat Ba town or in a bungalow on a private beach.