Melt the butter in a medium-sized ovenproof pan, add the onions and garlic and gently fry over a low heat for 30-35 minutes, stirring occasionally, until the onions are really soft and a rich dark brown colour. This stage of the recipe is really important, the long slow cooking of the onions gives this soup its lovely rich flavour and colour.
Add the white wine, stirring the bottom of the pan to loosen all the browned onion. Bring it back to the boil then add the Madeira and beef stock.
Bring to the boil and then simmer for about 10-12 minutes.
Meanwhile make the croutons. Toast the bread on both sides and rub the toast with the cut side of a garlic clove. Top with the grated cheese and place under the grill until the cheese has melted.
Taste the soup to check the seasoning, and add salt and freshly ground black pepper to taste. Add another few tablespoons of Madeira to the soup, to boost the flavour and stir well.
Lay the croûtons on top of the soup and scatter with fresh chopped parsley.
To serve, ladle the soup into bowls, making sure each serving has a cheesy croûton. Serve immediately, before the croûton goes soggy.