Set oven rack at the lowest level; preheat to 450°F.
Combine onions, shallots, garlic and oil in a large shallow roasting pan. Roast, stirring every 5 minutes, until the onions are golden, 20 to 25 minutes. Remove from the oven and pour in 1 cup of the broth; stir, scraping the bottom of the pan to loosen and dissolve any caramelized bits. (The liquid will become quite dark.)
Transfer the onion mixture to a soup pot and add brandy, thyme and the remaining 3 cups broth. Bring to a boil; reduce heat to low and simmer, covered, for 30 minutes. Season with salt and pepper. Divide between 4 bowls and sprinkle with Parmesan.