Melt the butter in a large pot over low heat. Cook the onions until soft, about 10 minutes.
Add three-quarters of the Parmesan cheese, the chicken stock, cream, and milk. Bring to a low simmer and cook until the ingredients are melted and the soup has thickened slightly, about 45 minutes.
While the soup is cooking (or beforehand), Cook the bacon until crisp, about 5 minutes. Drain on a paper towel.
Make the croutons by following the recipe below.
Add the remaining Parmesan to the soup and simmer for 10 minutes. more.
Puree the soup in a blender in batches, then strain through a sieve. Season with salt and pepper.
Scatter the croutons, shallots, chives, and bacon into soup bowls, ladle the soup on top, and serve immediately.