1. Heat oil in a 4- to 5-quart pot over moderately high heat until hot but not smoking and cook ham, stirring occasionally until golden, about 4 minutes. Add onion and continue to cook until onion is softened, about 2 minutes longer. Stir in beans, broth, water, and cilantro and bring to a simmer. Simmer soup, stirring occasionally, for 5 minutes.
2. Transfer 1 cup of soup to a blender and puree until smooth. Return puree to pot with soup, stirring to combine. Season with pepper to taste. Serve soup in bowls garnished with sliced onion and cilantro sprigs.