In large bowl, combine ground beef, breadcrumbs, Parmesan cheese, egg, garlic, onion powder, Italian seasoning, salt, and pepper. Mix until just combined without overworking.
Roll mixture into 1-inch meatballs, about 20 total. Set aside on plate.
Heat 2 tablespoons olive oil in large skillet over medium heat. Brown meatballs on all sides for 6-8 minutes. Remove and set aside.
In same skillet, melt butter over medium-low heat. Add sliced onions and sugar. Cook slowly for 15-20 minutes, stirring occasionally, until golden brown and caramelized.
Sprinkle flour over caramelized onions and stir for 1 minute.
Pour in beef broth, white wine, and Worcestershire sauce. Scrape bottom of pan. Bring to gentle simmer and cook 5-7 minutes until slightly thickened.
Return meatballs to skillet, nestling into sauce. Cover and simmer 10-15 minutes until cooked through, stirring halfway.
Preheat broiler. Sprinkle Gruyère cheese evenly over meatballs and sauce.
Transfer skillet to oven and broil 2-3 minutes until cheese is melted, bubbly, and golden. Watch closely to prevent burning.
Garnish with parsley and serve hot with crusty bread or mashed potatoes.
Notes
Use 80/20 ground beef for juiciest meatballs. Leaner meat works but may be slightly drier.
Wine can be replaced with additional beef broth for alcohol-free version.
Gruyère provides authentic French onion flavor, but Swiss, Fontina, or mozzarella work too.
Patience is key when caramelizing onions. Low and slow prevents burning while developing sweetness.