Very lightly adapted from Chad Robertson's brilliant recipe in Tartine Bread. He throws in a tablespoon of duck fat in place of half the butter; if you have it, do it. Also, about the bread: The richness here would pair well with a whole wheat rustic bread, if you have a decent version around. —Nicholas Day
In a large, wide-bottomed pot, combine the onions, cream, butter, and salt. Cook, stirring occasionally, over medium to medium-high heat until the onions soften and the cream reduces to its solids. This should take anywhere from 10 to 30 minutes, depending on your onions and your pot. Then turn the heat up slightly, so the onions and cream bubble at a slow boil, and cook without stirring for about six or seven minutes, until the onions on the bottom are deeply brown. (Depending on your stove, this might mean at medium heat or at high. Don't go overboard: you don't want the onions blackened.) Stir the onions and add a half-cup of wine and deglaze the pan, scraping up all the burnt and browned bits. Then repeat the process: leave the onions without stirring for another six minutes or so, then deglaze. Repeat until you have used all 2 cups of wine. The onions should now be a rich, dark brown color; they should smell divine.
Add the stock. (Use less if you want more of a stew.) Bring to a simmer and cook for about 15 minutes. Season with salt if needed.
Preheat the oven to 400°F. Toast the bread until it is dry and crusty, about 15 minutes. Ladle the soup into either ovenproof bowls or a single large baking dish (if the latter, place it on a baking sheet: it will spill). Fill the bowls or dish to nearly the rim. Float the bread on the soup and sprinkle with the Gruyere. Bake until the cheese is bubbly and browned, 20 to 30 minutes. Let cool until it will no longer burn your tongue. Devour.