Preheat the oven to 400º F. Line a large baking sheet with parchment paper or a silicone baking mat.
In a large bowl, combine all the meatball ingredients. Mix thoroughly until well combined. Using a heaping tablespoon or small scoop, form the mixture into meatballs and place them evenly on the prepared baking sheet.
2 pounds lean ground beef, ⅓ cup milk, 1 cup quick oats, 1 Tablespoon parsley, 1 Tablespoon Italian seasoning, 1 ½ teaspoons salt, ½ teaspoon black pepper, 6 cloves garlic, 2 eggs eggs
Bake for 20–25 minutes, or until fully cooked through.
While the meatballs bake, make the sauce:
Slice the onions in half from root to stem and cut into thin slices. In a large skillet, heat the olive oil over medium heat. Add the onions and cover with a lid. Cook for about 15 minutes, stirring occasionally, until soft and translucent.
2 yellow onions, ¼ cup light olive oil
Uncover and continue cooking, stirring frequently, until the onions turn golden and begin to caramelize. If they start to stick, add a splash of water to loosen.
Once caramelized, stir in salt, garlic, Italian seasoning, and flour. Mix until the flour is fully incorporated. Slowly pour in the wine and chicken broth, stirring constantly. Bring to a simmer and cook until thickened.
½ teaspoon salt, 4 cloves garlic, ½ cup dry red wine, 1 Tablespoon Italian seasoning, 3 Tablespoons all-purpose flour, 2 ½ cups chicken broth
When the meatballs are done, drain any excess grease. Add them to the skillet with the onion sauce (or transfer everything to a larger, oven-safe pan if needed). Stir to coat the meatballs, then top with Swiss and Gruyère cheeses.
8 slices Swiss cheese, 1 cup shredded Gruyère cheese
Place under the broiler on low until the cheese is melted and bubbly.
Remove from the oven and serve hot.