Caramelize the Onions: In a large heavy bottomed pot or Dutch oven, heat the olive oil and butter over medium heat until the butter is melted and foamy. Add the sliced onions and salt. Cook, stirring occasionally, for 20-25 minutes, or until the onions are very soft, reduced in volume, and a deep golden brown color. If the bottom of the pot starts to scorch, add a splash of water or wine and scrape up the browned bits.
Add Aromatics: Add the minced garlic to the pot and cook for 1 minute more until fragrant.
Deglaze: Pour in the balsamic vinegar, Worcestershire sauce, and dry white wine. Use a wooden spoon to scrape up any browned bits stuck to the bottom of the pot. Let the liquid bubble and reduce for about 2 minutes.
Simmer the Soup: Add the black pepper, oregano, fresh thyme sprigs, bay leaves, drained white beans, and beef broth. Stir to combine.
Bring the soup to a boil, then reduce the heat to medium low and simmer uncovered for 20 minutes to allow the flavors to meld. Remove bay leaves before serving.
Serve: Ladle soup into bowls. Top generously with croutons and a pile of grated Parmesan and Gruyère cheese.