Begin by peeling and thinly slicing 1 1/2 pounds of yellow onions, creating uniform slices about 1/8-inch thick for even cooking. The key to perfect French onion soup is patience during this step, as thin, consistent slices ensure even caramelization throughout the cooking process.
In a large heavy-bottomed pot or Dutch oven, melt the entire stick of butter over medium heat. Add all the sliced onions to the melted butter, stirring gently to coat every slice completely. Cook the onions, stirring occasionally, until they become translucent and begin to soften, about 10-15 minutes. Continue cooking, stirring more frequently as they progress, until the onions develop a beautiful golden-brown color and sweet aroma. This caramelization process is crucial and should take about 20-25 minutes total. Don't rush this step, as proper caramelization creates the soup's signature depth of flavor.
Once the onions are perfectly caramelized and golden brown, add the beef stock and chicken broth to the pot. Stir in the black pepper, celery salt, regular salt, bay leaf, and Worcestershire sauce. Bring the mixture to a gentle boil over medium-high heat, then immediately reduce heat to low for the simmering phase.
Allow the soup to simmer gently for about 30 minutes, or until the onions are tender but still hold their shape. The onions should be soft enough to cut with a spoon but not completely broken down or mushy. Taste and adjust seasoning as needed, adding more salt, pepper, or Worcestershire sauce to your preference. Remove the bay leaf before serving to ensure the best presentation and eating experience.
Ladle the hot soup into individual bowls or oven-safe crocks for the most authentic presentation. Sprinkle generously with grated Parmesan cheese, then top with homemade or store-bought garlic croutons. For the classic presentation, place filled bowls under the broiler for 2-3 minutes until the cheese melts and bubbles attractively. Serve immediately while hot to capture the perfect combination of flavors and textures.