Cook the chopped bacon in a medium skillet over medium heat until crisp, stirring frequently. Remove from the skillet to a small bowl. Drain all but 2 tablespoons of the drippings from the skillet.
Add the shallot and cook for 1 minute, stirring occasionally. Add the spinach. Cook for an additional minute, stirring occasionally. Remove to a small bowl.
Add the cream cheese, shredded cheese, grated cheese, milk, and sour cream to the skillet. Cook over low heat until melted and thoroughly heated.
Fold in the spinach/shallot mixture and all but 1 tablespoon of the bacon. Sprinkle reserved bacon on top.