Warm a medium saucepan over medium heat. Add olive oil, allow to warm through, then add chopped shallots and cook for 1-2 minutes. Add garlic, cook for another 1-2 minutes, until shallots and garlic are both fragrant and soft, but not browned.
Add finely chopped artichokes, and cook for 3 minutes. Turn the heat to medium-low, and add the finely chopped fresh spinach. Cook until the spinach wilts, about 3-4 minutes. (Note : the spinach will reduce GREATLY, so don't be alarmed if it seems like you're adding a lot at first!)
Add milk, and stir until it has absorbed into the veggies. Add cream cheese, stir in completely, then repeat with sour cream and mayonnaise. Stir each ingredient in completely before adding the next. This helps with the equal distribution of flavors.
Add romano cheese, pepper, and hot sauce (optional). Stir in. Add salt to taste (if necessary), and stir a final time to combine. Turn off the heat.
Turn your oven to low broil. Using a serrated knife, cut a large hole out of the center of a small sourdough or other small, round bread loaf. Make the hole deep and wide enough to fit the majority (if not all) of your spinach dip.
Place the bread bowl onto a baking sheet, and pour the dip into the bread bowl. Pop the baking sheet onto the top rack of your oven under a low broil, and allow it to broil for about five minutes. You're looking for the cheese to bubble and brown slightly, so feel free to remove it from the oven if this happens before you hit the five minute mark. The dip should already be hot from cooking it on the stovetop, so this part is more for presentation!
Remove the bread bowl from the oven, and carefully move to your desired platter / plate. Cut the bread you removed from the bowl into squares or rectangles, and use as vessels for dipping. Alternatively, use fresh pita, pita chips, baked flatbread, or chips.
Serve hot and enjoy!