My go-to, courtesy of Andrew Zimmern:

2 tablespoons extra-virgin olive oil
2 large onions, halved and thinly sliced (7 cups)
2 leeks, whites and light green parts only, thinly sliced
1 cup thinly sliced shallots (2 large)
Kosher salt
5 garlic cloves, minced
3 tablespoons tomato paste
1 tablespoon herbs de Provence
1 bay leaf
1 cup dry red wine
1/4 cup sherry vinegar
8 cups beef stock or low-sodium broth
Freshly ground pepper
1 stick unsalted butter, cut into chunks
12 baguette slices, cut 1/2 inch thick
4 ounces Gruyère cheese, shredded (1 cup)
Finely chopped thyme, for garnish


In a large enameled cast-iron casserole, heat the olive oil. Add the onions, leeks, shallots and a generous pinch of salt and cook over moderate heat, stirring occasionally, until very tender and caramelized, 40 to 45 minutes; stir in 1 to 2 tablespoons of water if the onions look very dry.

Add the garlic, tomato paste, herbs de Provence and bay leaf to the casserole and cook over moderate heat, stirring, until fragrant and the mixture is glossy, about 3 minutes. Add the wine and vinegar and simmer over moderate heat, stirring, until reduced by half, 2 to 3 minutes. Stir in the stock and bring to a boil. Simmer over moderately low heat, stirring occasionally, until the soup is well flavored and reduced to 8 cups, about 45 minutes. Discard the bay leaf. Season the soup with salt and pepper and keep warm over very low heat.

Meanwhile, in a very large skillet, melt the butter. Add the baguette slices and cook over moderate heat, turning once, until golden and just crisp, about 2 minutes. Transfer the croutons to a plate.

Preheat the broiler and position the rack 8 inches from the heat. Arrange 6 heatproof bowls on a large rimmed baking sheet. Ladle the soup into the bowls and top with the croutons and cheese. Broil until the cheese is melted and browned in spots, 1 to 3 minutes. Sprinkle with thyme and serve.