Preheat your oven to 400°F (200°C).
In a large pot, melt the butter and olive oil over medium heat. Add the sliced onions and cook, stirring occasionally, until caramelized, about 25-30 minutes.
While the onions are cooking, prepare the meatballs. In a mixing bowl, combine the ground beef, breadcrumbs, Parmesan cheese, egg, minced garlic, Italian seasoning, salt, and pepper. Mix well and shape into small meatballs (about 1-inch in diameter).
Place the meatballs on a baking sheet and bake in the preheated oven for 15 minutes or until cooked through.
Once the onions are caramelized, sprinkle the flour over them and stir for about a minute.
Gradually pour in the wine and beef broth while stirring. Add the sugar, thyme, salt, and pepper. Bring the mixture to a simmer and let it cook for an additional 10 minutes.
Add the cooked meatballs into the broth and simmer for 5 more minutes.
Meanwhile, prepare the baguette slices by toasting them lightly.
To serve, ladle the soup into broiler-safe bowls, top with a slice of toasted baguette, and sprinkle with Gruyère cheese.
Place the bowls under the broiler for 2-3 minutes or until the cheese is melted and bubbly.
Serve hot and enjoy your French Onion Soup with Meatballs!