In this paper, we obtain a class of irreducible Virasoro modules by taking tensor products of the irreducible Virasoro modules $\Omega(\lambda,b)$ with irreducible highest weight modules $V(\theta ,h)$ or with irreducible Virasoro modules $\mathrm{Ind}_{\theta}(N)$ defined in Mazorchuk and Zhao (Selecta Math. (N.S.) 20:839–854,2014). We determine the necessary and sufficient conditions for two such irreducible tensor products to be isomorphic. Then we prove that the tensor product of $\Omega(\lambda,b)$ with a classical Whittaker module is isomorphic to the module $\mathrm{Ind}_{\theta, \lambda}(\mathbb{C}_{\mathbf{m}})$ defined in Mazorchuk and Weisner (Proc. Amer. Math. Soc. 142:3695–3703,2014). As a by-product we obtain the necessary and sufficient conditions for the module $\mathrm{Ind}_{\theta, \lambda}(\mathbb{C}_{\mathbf{m}})$ to be irreducible. We also generalize the module $\mathrm{Ind}_{\theta, \lambda}(\mathbb{C}_{\mathbf{m}})$ to $\mathrm{Ind}_{\theta,\lambda}(\mathcal{B}^{(n)}_{\mathbf{s}})$ for any non-negative integer $n$ and use the above results to completely determine when the modules $\mathrm{Ind}_{\theta,\lambda}(\mathcal{B}^{(n)}_{\mathbf{s}})$ are irreducible. The submodules of $\mathrm{Ind}_{\theta,\lambda}(\mathcal{B}^{(n)}_{\mathbf{s}})$ are studied and an open problem in Guo et al. (J. Algebra 387:68–86,2013) is solved. Feigin–Fuchs’ Theorem on singular vectors of Verma modules over the Virasoro algebra is crucial to our proofs in this paper.