First, place butter, olive oil, onions, thyme, salt, and pepper in a pot on medium heat.
Now, stir occasionally as the onions cook down. The onions will fill your pot in the beginning and as it caramilizes will be just a layer at bottom of the pot. This takes 40 minutes.
Also, add 2 tablespoons butter and flour and cook 2 minutes.
Next, add the garlic and saute for 1 minute. Taste the onions to see if needs more seasoning add to taste (I usually add 1 teaspoon salt and a couple turns of pepper mill).
Now, add wine and reduced by 1/2. Only takes 2-3 minutes.
Next, add the beef broth, red wine, and soy sauce. Raise the heat to boil and then reduce to simmer for 30 minutes.
Now, while the soup cooks add gruyeere cheese to the sliced baugettes and toast until melted. Set aside till soup is done.
Finally, taste the soup for seasoning. I place cheesy bread floating in the soup pot. This makes it less work but you can pour soup into small bowls, add bread, add cheese and melt each in oven too!