Wash hands with soap and water.
Preheat oven to 350°F.
Scrub the onion with a clean vegetable brush under running water. Dice the onion.
Thinly slice bacon crosswise. Cook bacon in a medium saucepan over medium heat, stirring occasionally, until browned and crisp (about 10minutes).
Wash hands with soap and water after handling uncooked bacon.
Remove browned bacon from the pan and drain on a paper towel.
Discard all but 1 tablespoon of bacon fat from the pan. Add diced onion to the saucepan and season with salt and pepper. Cook over medium heat, stirring occasionally, until tender (about 8 minutes).
Add flour to the saucepan and cook for 30 seconds.
Wash hands with soap and water.
Add spinach, milk, sour cream, and cream cheese to the saucepan.
Cook over medium heat while stirring until the cream cheese has melted (about 2 minutes). Remove saucepan from heat and stir in bacon and ¼ cup of Parmesan cheese.
Transfer mixture to a 1½ quart baking dish and top with ¼ cup Parmesan cheese.
Bake the spinach dip until bubbling (about 14 minutes).Change the oven setting to broil, and broil until the top browns.
Let sit for 5 minutes. Serve dip warm with your favorite crackers or chips.