Source: America's Test Kitchen
These are quite a bit of work but they're amazingly delicious.  Setting up an assembly line of sous chefs is quite helpful.
For dough:
2 Cups (10 ounces) unbleached all-purpose flour, plus extra for the work surface
1/2 tsp salt
2 Tbsps plain whole milk yogurt
3 quarts plus 3 Tbsps vegetable oil
6 Tbsps cold water
For filling:
Spices:
1 tsp fennel seeds
1 tsp cumin seeds
1 tsp brown mustard seeds
1/4 tsp ground fenugreek
1/4 tsp ground turmeric
1/8 tsp red pepper flakes
2 pounds russet potatoes (about 4 medium), peeled and cut into 1-inch chunks
Salt
3 Tbsp vegetable oil
1 medium onion, minced
3 medium garlic cloves, minced or pressed through a garlic press (~ 1 Tbsp)
1 1/2 tsps minced or grated fresh ginger
1/2 cup frozen peas, thawed
Ground black pepper
1.  In a food processor (or by hand) combine flour and salt.  Drizzle with the yogurt and 3 Tbsps oil and process until the mixture resembles course corm meal.  Slowly add 4 Tbsp water until the dough forms a ball.  If it doesn't form a ball, slowly add up to 2 Tbsps more water.  The dough should feel very soft and malleable.
2.  Transfer the dough to a floured work surface and knead by hand until it firms slightly, 2-3 minutes.  Wrap in plastic wrap and let rest for at least 20 minutes (or up to 1 day).
3.  Cover the potatoes by 1 inch of water in a large saucepan and add 1 Tbsp salt.  bring to a boil then reduce to a simmer and cook until tender, 12-15 minutes.  Drain and set aside to cool slightly.
4.  Combine the spices in a small bowl.  Heat the oil in a 12 inch nonstick skillet over medium-high hear until shimmering.  Add the spices and saute until fragrant, about 10 seconds.  Stir in the onion and 1 tsp salt and cook until softened, 5-7 minutes.  Stir in the garlic and ginger and cook until fragrant, about 30 seconds.  Stir in the cooled potatoes and cook until they begin to brown around the edges, 5-7 minutes.  Stir in the peas to combine.
5.  Transfer the mixture to a bowl, cover and refrigerate until completely cool, about 1 hour.  Season with salt and pepper (you can store the filling at this point for up to 2 days).
6.  Cut the dough into 12 equal pieces.  One at a time (so as not to let the rest dry out), roll the dough into a 5-inch round using a rolling pin.  Cut each dough round in half to form 2 half moons.
7.  To shape the samosas:  Working with 1 half-moon piece of dough at a time, moisten the straight side with a wet finger and fold in half.  Press to seal the seam on the straight side only and crimp with a fork to secure, leaving the rounded edge open.
8.  To fill the samosas:  Pick up the piece of dough and hold it gently in a cupped hand with the open, unsealed edge facing up and open in a cone shape.  Fill with ~ 2 Tbsps filling and pack the filling in tightly in order to leave a 1/4 inch rim at the top.  Moisten the inside rim of the cone with a wet finger, and pinch the top edge together to seal.  Lay the samosa on a flat surface and crimp all the edges with a fork to secure.
8.  Heat 3 quarts oil in a large Dutch oven to 375 degrees F.  Add 8 samosas and fry until golden brown and bubbly (2 1/2 to 3 minutes), adjusting the heat to maintain 375 degrees.  Using a slotted spoon, remove the samosas, return the oil to 375 degrees and fry the rest of the samosas, 8 at a time.
Posted by MER
Extra note: The recipe also called for adding 1/4 cup minced cilantro and 1 1/2 tsps lemon juice after cooling the filling, but I forgot to add them and the samosas were still ridiculously good so I probably won't bother with them in the future.