Preheat the oven to 400°F (200°C) for the meatballs.
In a large pot or Dutch oven, melt the butter and olive oil over medium heat. Add the sliced onions and cook, stirring occasionally, for about 20-25 minutes until they are caramelized and golden brown.
Stir in the minced garlic and cook for an additional 1-2 minutes until fragrant.
Pour in the beef broth and white wine, and add the thyme and bay leaves. Bring the soup to a gentle simmer and let it cook for about 15 minutes. Season with salt and pepper to taste.
While the soup simmers, prepare the meatballs. In a mixing bowl, combine ground beef, breadcrumbs, Parmesan cheese, egg, oregano, garlic powder, salt, and pepper. Mix until well combined.
Form the mixture into small meatballs, about 1 inch in diameter, and place them on a baking sheet. Bake in the preheated oven for 15-20 minutes until cooked through and browned.
Remove the bay leaves from the soup. Once the meatballs are done, gently add them into the soup and let them simmer for another 5 minutes to absorb the flavors.
Toast the slices of French baguette until golden brown.
To serve, ladle the soup into bowls, top each with a slice of baguette, and sprinkle generously with shredded cheese. If desired, place under the broiler for a minute to melt the cheese.