NLGEOM is a valid setting for this becuase it creates a solution process with multiple solve iterations.  Without NLGEOM, a single solution using the nodes that are initally in contact gives you the local deformation.  With NLGEOM, the nodal posititions are updated, and the contact status is reevaluated and new nodes are found to have come into contact. The second solve spreads out the contact patch.  The nodal positions are updated again, and the contact search is repeated to look for new nodes that have come into (or out of) contact. The iteration continues until there are no more changes in contact status.

If you have a very fine mesh around the contact point, you will get many iterations and a very smooth contact pressure patch that covers many elements and has the pressure highest at the center of the patch and tapering off to the edges of the patch.  Your mesh is too coarse to see this effect. Consider refining the mesh at the contat point.

I see you are working in APDL. I don’t know the command in APDL, but in Workbench, an Advanced configuration of the contact is to Update Stiffness on Each Iteration.