MapInfo Professional and overlapping labels version 11.5 and older

Open the Layer Properties dialog:

1.  One option is to "discard overlapping text".
2.  A newer option available is to select: when overlap occurs try other positions" (double-click on entry in layer control to get to this dialog)

User-added image

The general algorithm for "When overlaps occur try other positions" basically works in the following manner:
- For each Object requiring a label (process labels in row order)
- Create label according to label properties
- Try to place label
- If label can be placed (it does not overlap any previously drawn label), draw it and move onto next label
- If label overlaps another label put it aside into separate "retry" list and move onto next label
- Then look through the "retry" list and for each Label in retry list, get next placement position
- If new placement does not overlap any prevsiuosly drawn labels, draw label and move onto next "retry" label
- If new placement overlaps any previously drawn label, repeat steps 1 and 2 until label does not overlap and can be drawn, or all positions have been tried.

3. Another option would be to allow overlapping text and then manually move labels to create "custom" labels.  Once this is complete, save the workspace to ensure your custom label placements are saved.
Another option is a 3rd-party app for MI Pro, known as EverName, that some user's have mentioned as working for them - it automatically moves labels to display as many as possible without overlap: Link to EverName

UPDATED:  April 19, 2017