Preheat your oven to 375°F. Heat the olive oil and butter in a large skillet over medium heat. Once the butter melts and gets all foamy, add your minced garlic and cook for about 30 seconds — you'll smell that incredible garlic aroma when it's ready. Don't let it brown or it'll taste bitter.
Add your drained spinach and artichoke hearts to the skillet. Stir everything together and cook for about 2 minutes until it's heated through. This step brings all the flavors together, trust me on this. You'll see the spinach warm up and the kitchen smells absolutely amazing.
In a large mixing bowl, combine your softened cream cheese, mozzarella, and Parmesan. Stir until you've got a smooth, creamy base with no lumps. If your cream cheese is still cold, it'll be harder to blend, so let it sit on the counter for 10 minutes first.
Pour the spinach and artichoke mixture from your skillet into the cheese mixture. Add your heavy cream and milk, then season with salt, pepper, and smoked paprika. Fold everything together gently until you've got this gorgeous, creamy spinach artichoke dip recipe consistency. Don't overstir — you want to keep it light and fluffy.
Transfer your dip to an oven-safe baking dish (an 8-by-8-inch works great). Smooth the top with a spatula so it cooks evenly. I usually press it down gently to make sure there aren't any air pockets that'll cause it to cook unevenly.
Bake for 20 to 25 minutes at 375°F until the top is golden and the dip is bubbling around the edges. You'll know it's done when it looks all bubbly and creamy, not dry. Pro tip: if the top isn't golden enough after 20 minutes, crank the broiler on high for the last minute — watch it carefully though.
Let it rest for 2 minutes before serving (I know it's hard to wait, but this helps it set). Drizzle the top with a tiny bit more paprika if you're feeling fancy. Serve it hot with your favorite dippers and watch everyone absolutely lose it.