Bring a large pot of water to a boil. Add 1 tablespoon salt to the water, if desired. Add the potatoes and reduce the heat to a simmer. Cook until the potatoes are fork-tender, about 12 minutes. Drain.
Mash the potatoes through a ricer, or by hand, into the pot. Add the milk and 2 tablespoons of the butter and mash until smooth. Set aside.
While the potatoes cook, heat a large skillet over medium heat. Add the beef and cook, breaking up the meat with a wooden spoon, until browned, 5 to 6 minutes. Transfer the beef with a slotted spoon to a large bowl and discard the fat in the skillet.
Heat the olive oil in the same skillet over medium heat. Add the onion, celery and carrot and cook, stirring occasionally, until tender, about 4 minutes. Transfer to the large bowl.
Melt the remaining 2 tablespoons butter in the same skillet over medium-low heat. Add the flour and cook, stirring constantly, until the resulting roux is golden. Add the beef stock and Worcestershire sauce and whisk to thoroughly combine.
Add the beef and vegetable filling to the sauce and stir to combine.
Transfer the filling to six to eight 12-ounce ramekins or one 2-quart baking dish.
Sprinkle with the peas, then spread the mashed potatoes on top. Sprinkle with the cheese. Transfer the ramekins to a rimmed baking sheet.
Bake until the potato topping just starts to turn golden, about 35 minutes for the baking dish or 20 minutes for the ramekins.