In a Dutch oven, heat the olive oil over medium heat. Add the onion, garlic, and season with salt and pepper. Cook, stirring occasionally, until softened and just starting to brown, about 10 minutes. Add the escarole, rosemary, and sage. Cook, stirring, until the escarole is barely wilted, about 3 minutes. Add the broth, ham, and beans. Bring just to a boil, then simmer over low heat until hot, 3 to 5 minutes; season with salt and pepper. Ladle into bowls and serve, passing grated parmesan cheese, crushed red pepper, and olive oil at the table.