Melt butter and olive oil in a large Dutch oven over medium heat. Add all sliced onions and 1/2 tsp salt. Stir to coat.
Reduce heat to medium-low. Cook onions uncovered for 40 to 50 minutes, stirring every 5 to 8 minutes, until deep amber, greatly reduced, and glossy throughout.
Add garlic, thyme, and bay leaves. Stir and cook 2 minutes until garlic is fragrant.
Add pomegranate juice and scrape all browned bits from the pot bottom. Cook 1 to 2 minutes until liquid evaporates.
Pour in beef stock. Add remaining 1/2 tsp salt, soy sauce, and black pepper. Bring to a gentle boil, then reduce to a low simmer.
Simmer uncovered 20 to 25 minutes. Remove bay leaves. Taste and adjust salt.
Preheat oven to 190°C (375°F). Bake baguette slices on a baking sheet 8 to 10 minutes until completely dry and firm throughout.
Set oven to broil (high). Ladle hot soup into 4 oven-safe crocks on a rimmed baking sheet. Top each with 1 to 2 croutons.
Cover croutons evenly with grated Gruyère and Parmesan.
Broil 3 to 5 minutes, watching continuously, until cheese is fully melted, golden, and lightly charred at the peaks. Serve immediately.