While water comes to a boil in a large pot, prepare your mise en place by finely dicing the celery stalks into 1/4-inch pieces, dicing the onion, and chopping the fresh parsley. If your hard-boiled eggs aren't already prepared, add them to the boiling water now (or use pre-cooked eggs). This parallel work ensures everything is ready when the potatoes finish cooking, minimizing idle time.
Add the 1-inch potato cubes to a pot of boiling salted water and cook for 12-15 minutes until a fork easily pierces the largest piece but the potatoes still hold their shape—you want them tender, not falling apart. I like to undercook potatoes just slightly for potato salad because they'll continue to soften as they cool and absorb the dressing, keeping the salad from becoming mushy.
Drain the cooked potatoes in a colander and spread them on a large plate or baking sheet to cool to room temperature, about 15-20 minutes. This step is crucial—if you add warm potatoes to the mayonnaise, it will break and become greasy. A cool salad also holds together better when served cold.
In a large mixing bowl, whisk together the mayonnaise, apple cider vinegar, salt, black pepper, and celery seed until smooth and well combined. This creates your dressing base with the right balance of creaminess and tang. I find that mixing the dressing separately first allows the flavors to meld before tossing with the vegetables.
Add the cooled potatoes, diced celery, diced onion, and chopped eggs to the dressing base and gently fold everything together with a rubber spatula until evenly coated, being careful not to break up the potatoes. Taste and adjust seasoning as needed—potato salad often needs more salt than you'd expect.
Transfer the potato salad to a serving bowl and sprinkle the chopped fresh parsley and paprika over the top for color and flavor. Refrigerate for at least 30 minutes before serving to allow the flavors to develop and the salad to chill thoroughly.