1 bunch spinach, thick stems trimmed
1 tablespoon vegetable oil
1 large shallot, finely chopped
1 garlic clove, finely grated
Freshly ground black pepper
4 ounces cream cheese
½ cup sour cream
½ cup mayonnaise
1 10-oz. package frozen artichoke hearts, thawed, chopped
¾ cup grated Parmesan
Crackers, chips, or toasted baguette (for serving)
Preheat oven to 400°. Cook spinach in a large pot of lightly salted boiling water until wilted, about 30 seconds. Transfer to a bowl of ice water to cool. Drain spinach, squeezing out excess liquid, then transfer to a clean kitchen towel and use the towel to wring out as much liquid as possible. Be thorough and use some muscle; water from the spinach will make the dip thin and runny (not what you want). Transfer spinach to a cutting board and coarsely chop.
Heat oil in a medium saucepan over medium-high heat. Add shallot and cook, stirring, until softened, about 3 minutes. Stir in garlic and cook until fragrant, about 1 minute. Add spinach and cook, stirring, until pan begins to look dry, about 2 minutes; season spinach with salt and pepper. Let cool.
Pulse cream cheese, sour cream, and mayonnaise in a food processor, scraping down sides of bowl as needed, until combined and smooth. Transfer mixture to a medium bowl and fold in artichoke hearts, Parmesan, and spinach mixture; season with salt and pepper.
Scrape mixture into a 1-qt. baking dish and bake until golden brown on top, 20–25 minutes. Let dip cool slightly. Serve with crackers, chips, toast, or—dare we say it?—a vegetable.