We present an efficient algorithm for the construction of a basis of H2(Ω, ∂Ω; Z) via the Poincaré-Lefschetz duality theorem. Denoting by g the first Betti number of Ω the idea is to find, first g different 1-boundaries of Ω with supports contained in ∂Ω whose homology classes in R 3 \ Ω form a basis of H1(R 3 \ Ω; Z), and then to construct in Ω a homological Seifert surface of each one of these 1-boundaries. The Poincaré-Lefschetz duality theorem ensures that the relative homology classes of these homological Seifert surfaces in Ω modulo ∂Ω form a basis of H2(Ω, ∂Ω; Z). We devise a simply procedure for the construction of the required set of 1-boundaries of Ω that, combined with a fast algorithm for the construction of homological Seifert surfaces, allows the efficient computation of a basis of H2(Ω, ∂Ω; Z) via this very natural geometrical approach. Some numerical experiments show the efficiency of the method and its performance comparing with other algorithms.