Peel and cut the potatoes into chunks, place them in a pot, cover with cold water, and cook until they’re tender.
While the potatoes cook, add the ground beef to a large skillet and cook for 5-7 minutes or until browned completely.
Add the onions, carrots, and garlic and cook for 4-5 minutes.
Stir in the tomato paste, spices, garlic powder, Italian seasoning, thyme, and Worcestershire sauce. Cook for 1 minute.
Add the flour and cook for 5 minutes while stirring occasseionally.
Add the beef stock and allow it to simmer for 15 minutes while stirring occasionally.
Once the 15 minutes are up, add the peas, corn, parlsey, and season generously with salt and pepper.
Once the potatoes are tender, drain them and mash thoroughly. While mashing, add the softened butter. Then, pour in the heavy cream and mix until the potatoes are light and fluffy. Stir in the egg yolk, followed by the cream cheese, mixing well. Finally, season generously with salt.
Spoon or pipe the mashed potatoes on top of the ground beef mixture. You can simply spread them with a spatula, but keep in mind that the mashed potatoes may stick to the beef, making them harder to spread. So, be sure to do this gently for an even layer.
Top the mashed potatoes with cheddar cheese and mozzarella cheese, then bake at 400 degrees F. for 15-20 minutes.
After it comes out of the oven, let it rest for a few minutes before serving and enjoy!