We construct Markov partitions for non-invertible and/or singular nonuniformly hyperbolic systems defined on higher dimensional Riemannian manifolds. The generality of the setup covers classical examples not treated so far, such as geodesic flows in closed manifolds, multidimensional billiard maps, and Viana maps, and includes all the recent results of the literature. We also provide a wealth of applications.