Toss the sliced onions on a sheet pan with the melted butter, olive oil, balsamic vinegar, and salt. Spread in an even layer and cover with aluminum foil. Roast for 20 minutes, then remove foil. Stir onions and roast for another 25 minutes, stirring halfway through.
Meanwhile, make meatballs. Combine panko and milk in a large bowl and let sit for 5 minutes. Add ground beef, parmesan, grated onion, egg, garlic, thyme, Worcestershire, salt, and pepper. Mix until just combined. Roll into about 16 meatballs.
Whisk together dijon mustard with beef broth.
Remove onions from the oven and push them aside. Nestle the meatballs in and pour the broth mixture over the top. Add thyme sprigs and roast for 18-20 minutes, or until the meatballs reach 160°F.
Switch the oven to broil. Remove the pan from the oven and top with Gruyère and mozzarella. Broil for 3-4 minutes, until bubbly and browned.
Remove pan from the oven and serve french onion meatball balls over mashed potatoes, egg noodles, or with crusty bread, spooning the onions and pan juices over the top.
Notes
You can prepare the entire dish on the stovetop instead of the oven, if preferred.