Preheat the oven to 400 degrees F / 200 degrees C.
Add the olive oil to a large frying pan over medium heat. Add the chopped onion and saute for 5 minutes.
Add the minced garlic and continue to saute for an additional minute.
Add the diced carrots and cook for 2-3 minutes until slightly softened.
Add the ground beef and cook for 8-10 minutes or until the beef is nicely browned.
Add the Guinness to deglaze the pan and scrape all the tasty bits off the bottom of the pan.
Add the flour, mixing well with the ingredients. Allow to cook for 2 minutes.
Add the tomato paste, beef broth, Worcestershire sauce, rosemary, thyme, sea salt and black pepper. Stir well and let simmer for 2-3 minutes.
Add in the peas and remove from the heat.
Bring potatoes to a boil in a large pot with salted water. Cook until the potatoes are tender.
Drain the potatoes and return them to the hot pot over low heat.
Add the butter to the pan and mash it into the potatoes.
Whip the egg yolk with the milk and add to the potatoes along with the cream cheese. Mix until well combined.
Season with sea salt and black pepper to taste. Add 1 cup of cheddar cheese to the potatoes.
Transfer the meat filling into a 9-inch by 9-inch baking dish. Spread the mixture evenly.
Spoon the mashed potatoes on top of the beef mixture and even out with a spatula.
Bake for 20 minutes.
Remove from the oven and sprinkle ¼ cup of shredded cheddar and chopped parsley on top. Return to the oven and bake for another 10 minutes.
Let sit for 10-15 minutes before serving.
