Remove ham from the bone; cut meat into bite-sized pieces. Reserve the bone.
Melt 1 tablespoon butter in a skillet over medium heat. Add ham; cook and stir until lightly browned, about 4 minutes.
At the same time, melt remaining 1 tablespoon butter in a large saucepan. Add onion, carrots, and garlic; cook and stir until onion is translucent, about 5 minutes.
Pour undrained beans into vegetable mixture. Add ham, reserved ham bone, water, and bay leaves; season with salt and pepper. Bring to a boil, then reduce heat to medium-low and simmer for 25 minutes, adding more water if a thinner consistency is desired.