Heat the olive oil in a large pot over medium heat. Add the onions, carrots, and celery and cook for 3 minutes, stirring often.
Add the garlic, tomato paste, Italian seasoning, and black pepper. Cook for 1 minute, stirring frequently.
Stir in the ham and cook for 1 minute, stirring often.
Add the pinto beans and chicken broth to the pot. Raise the heat and bring the liquid to a boil (this will take about 3–4 minutes).
Lower the heat to medium-low, cover, and simmer for 15–20 minutes, stirring occasionally. Adjust the heat as needed to maintain a gentle simmer.
Add the potatoes, raise the heat to high, and bring the liquid back to a boil (about 2–3 minutes).
Lower the heat to medium-low, cover, and simmer for 20–25 minutes, or until the potatoes and beans are very tender. They should break apart easily when pressed with a fork or spoon.
Taste and adjust salt if needed. As a reference, we added ⅛ teaspoon to ours.
Serve and garnish with chopped parsley, if desired.