In a large pot or dutch oven, heat the olive oil over medium heat. Add the chopped onions and carrots. Cook for 5 minutes, stirring occasionally, until softened. Stir in garlic and cook until fragrant, 30 more seconds.
Add the potatoes and ham. Stir in the flour and cook, stirring constantly until flour is absorbed, 1-2 minutes.
Pour in the chicken broth, milk and evaporated milk. Add the bay leaves. Stir and bring to a simmer. Reduce heat to low and simmer for 15 - 20 minutes, until potatoes are tender and easily pierced with a fork.
Add frozen corn and cook for 1-2 more minutes. Season to taste with salt and pepper. Ladle into bowls and garnish with chopped parsley if desired.