Heat the olive oil in a large pot over medium heat. When the oil is hot, but not smoking, add the onions, carrots, and celery. Cook for 5 minutes, stirring frequently.
Add the garlic, tomato paste, oregano, paprika, and black pepper. Cook for 1–2 minutes, stirring often.
Add the smoked ham, navy beans, chicken broth, water, and bay leaf. Stir well. Raise the heat to high and bring the liquid to a boil, about 6–8 minutes.
Lower the heat to medium-low. Cover and simmer for 60 minutes, stirring occasionally. Maintain a gentle simmer—adjust the heat as needed.
Use tongs to remove the smoked ham from the pot and place it on a cutting board or plate. Cover the pot and continue cooking the soup.
Once the ham is cool enough to handle, remove the meat from the bones. Discard the bones and any fatty pieces. Chop the meat and return it to the soup.
Continue simmering the soup for another 15 minutes. Taste a couple of beans—if they’re tender, the soup is done.
If the beans are still a little firm, continue cooking in 15-minute increments, checking for tenderness and stirring more often as the soup thickens.
Use tongs to remove the bay leaf and discard.
Taste the soup and add salt if needed. As a reference, we added ¾ teaspoon to ours.
Serve with crusty bread or a side of white or brown rice, if desired.