Peel the onions and slice them (with the grain) into half-moons.
Add the butter to a large, heavy bottomed skillet set over medium heat. Once the butter melts add the onions and cook them over medium-low heat, stirring occasionally, for 25 minutes until the onions are brown. Stir in half the salt and pepper and turn the heat off. Remove the onions from the pan.
Roll the ground beef into small meatballs (about 2” round). You will end up with about 20 meatballs.
Turn the heat under the skillet to low and add the meatballs. The bottom of the pan will be brown but that is okay. Cook the meatballs on all sides until they are golden brown. The meatballs will not be cooked all the way through.
Add the beef stock and water to the pan and gently stir, scrapping any brown bits off the bottom. Gently mix in the onions and noodles and bring everything up to a simmer.
Turn the heat to low and cover the pot with a tight-fitting lid, cook for 5 minutes. Remove the lid and stir gently. Place the lid back on the skillet and cook for another 3 minutes.
Remove the lid from the skillet and scatter the grated cheese over the top. Broil for 6 minutes or until the cheese in brown and bubbly.