Heat 3 Tbs of olive oil in a small skillet over medium heat - Add the sliced garlic and allow to cook for 1 minute - Remove from heat and allow to cool - Cut the bread into apx ¼ inch cubes - Toss the bread 'cubes' in the cooled oil until coated allover and transfer to a baking sheet
Drizzle the shallot with olive oil and wrap tightly in aluminum foil
Place the baking pan with the bread on the middle rack of the oven - Place the aluminum wrapped shallot on the top rack of the oven - Allow the bread to bake for 15 minutes or until lightly browned - Allow the shallot to roast for 45 minutes - After the specified times, remove each from oven and set aside until needed
Place a small skillet over medium heat - Add the chopped bacon to the cold pan and allow to cook (stirring regularly) until crispy (apx 10 minutes) - Transfer to absorbent paper until needed
Melt butter in a large pot over low heat - Once butter is melted, add the onion and sauté for 10 minutes or until golden in color - Add heavy cream, chicken stock, milk, and ¾ of the Parmigiano-Reggiano - Bring to a simmer
Reduce heat to low and allow to simmer (stirring regularly) for 45 minutes - After the 45 minutes, add the remaining Parmigiano-Reggiano and allow to simmer for another 10 minutes
Remove from heat and, using an immersion blender* purée until smooth
Pour the blended soup through a fine mesh sieve - Return to low heat to keep soup warm and season with salt and pepper to taste
Squeeze the roasted shallot from its skin and finely chop
Equally divide the croûtons, cooked bacon. roasted shallot, and chives into serving bowls - Ladle the soup over the top and top with a sprinkle of extra grated Parmigiano-Reggiano - Serve immediately with a good 'hunk' of crusty bread or a couple of slices of parmesan cheese toast
*Transfer to a blender (in batches if necessary) as alternative