Melt butter in a dutch oven or large pot over medium heat (tip: preheat the pot on the stove before adding the butter).
Add onions, garlic, oregano, thyme, and sage.
Cook, stirring occasionally, until onions are soft and translucent and begin to caramelize.
Add ½ cup of the red wine, stir, and bring to a boil.
Reduce to a simmer and simmer until the wine has evaporated (onions should be red and dry-ish).
Add the flour and stir the onions to coat. Cook on low for about 5 minutes, stirring frequently.
Add the beef stock, apple juice, Worcestershire, bay leaves, and the remaining wine.
Stir to make sure all of the flour is off of the bottom of the pot so it doesn’t burn.
Bring soup to a boil.
Reduce to a simmer. Skim the froth from the top and discard. This is a good time to taste the soup and add some salt if needed.
Cover and simmer for about 1 hour, stirring occasionally.
Preheat the broiler.
Fill soup crocks (I used Le Creuset mini cocottes) with stale baguette slices, about halfway. Ladle soup into the crocks. Top each with asiago and gruyere slices. Place onto a baking sheet and broil until the cheese is melted and golden. (And caution – the soup will be extremely hot!)