Preheat your oven to 350°F (180°C).
To a large pot, add potato chunks, cover with water and add salt. Bring to a boil, then reduce to a simmer and cook until tender, about 10-15 minutes. Drain well, then return to the pot. Add the butter and milk, and mash until smooth and creamy. Stir in half of the shredded cheddar cheese, taste and adjust seasonings to your preference and set aside.
Meanwhile, heat olive oil in a large skillet over medium heat. Add the onion, carrot and celery and cook until softened, about 4-5 minutes. Add the garlic and cook for 30 seconds or until fragrant.
Increase the heat to medium-high and add the ground beef to the skillet, season with salt and pepper. Cook until browned, breaking it apart with a spoon as it cooks.
Add the flour, and cook the mixture for 1 minute.
Add tomato puree, worcestershire sauce, beef stock, and bay leaves. Bring the mixture to a boil, then reduce the heat and let it simmer for 15-20 minutes, allowing the sauce to thicken slightly. Stir every few minutes to make sure nothing gets stuck at the bottom.
Stir in the peas, discard the bay leaves, remove from heat, taste the mixture and adjust seasonings to your preference.
Transfer the meat and vegetable mixture to a baking dish (if not using an oven proof dish already), spreading it evenly. Spoon the mashed potatoes over the top, spreading them out with a spatula to cover the mixture completely. If desired, use a fork to create a pattern for decoration.
Sprinkle the remaining cheddar cheese over the mashed potatoes.
Bake in the preheated oven for 20-25 minutes, until the top is golden and the edges are bubbly.
Allow the cottage pie to rest for a few minutes before serving, this will help it to hold its shape when cut.