A semi-analytical method for the tridimensional elastic-plastic contact between two hemispherical asperities is proposed. The first part of the paper describes the algorithm used to deal with the normal contact, which can be either load-driven or displacement-driven (dd). Both formulations use the conjugate gradient method and the discrete convolution and fast Fourier transform (DC-FFT) technique. A validation of the code is made in the case of the displacement-driven formulation for an elastic-plastic body in contact with a rigid punch, simulating a nano-indentation test. Another new feature is the treatment of the contact between two elastic-plastic bodies. The model is first validated through comparison with the finite element method. The contact pressure distribution, the hydrostatic pressure and the equivalent plastic strain state below the contacting surfaces are also found to be strongly modified in comparison to the case of an elastic-plastic body in contact with a purely elastic body. The way to consider rolling and sliding motion of the contacting bodies consists of solving the elastic-plastic contact at each time step while upgrading the geometries as well as the hardening state along the moving directions. The derivations concerning the interference calculation at each step of the sliding process are then shown, and an application to the tugging between two spherical asperities in simple sliding (dd formulation) is made. The way to project the forces in the global reference is outlined, considering the macro-projection due to the angle between the plane of contact and the sliding direction, and the micro-projection due to the pile-up induced by the permanent deformation of the bodies due to their relative motion. Finally, a load ratio is introduced and results are presented in terms of forces, displacements, and energy loss in the contact.