Heat olive oil and butter in a Dutch oven over low heat. Add onion; cook until tender, about 10 minutes. Sprinkle flour over onion; cook and stir until onion is coated, about 5 minutes.
Stir vegetable broth and potatoes into the onion mixture; bring to a boil. Reduce heat to medium; cook partially covered until potatoes are tender, about 10 minutes. Add corn, red pepper, green pepper, half-and-half, ground black pepper, and salt. Reduce heat to low; cook and stir until corn is softened, about 8 minutes.