Place the potato cubes in a large pot and cover with cold water by about an inch. Bring to a boil over high heat, then reduce to a simmer and cook for 15-20 minutes, until the potatoes are tender when pierced with a fork.
While the potatoes cook, place the eggs in a small saucepan and cover with water. Bring to a boil, then remove from heat, cover, and let sit for 10 minutes. Transfer eggs to a bowl of ice water to cool, then peel and chop.
In a large mixing bowl, whisk together the mayonnaise, Dijon mustard, apple cider vinegar, salt, pepper, and paprika (if using) until smooth.
Drain the cooked potatoes in a colander and let them sit for 5 minutes to steam-dry slightly—this helps the dressing stick better.
Add the warm potatoes to the bowl with the dressing. Gently fold in the chopped eggs, red onion, celery, and fresh dill until everything is evenly coated.
Taste and adjust seasoning if needed. Transfer to a serving dish, garnish with extra dill, and serve warm.