Preheat oven to 375 degrees. Grease a 11 X 7 pan with cooking spray.
Put carrots in a small bowl with 1 Tbsp water, and cover with plastic wrap leaving a small hole for steam. Microwave until they start to get a little tender but are not cooked through, about 2 minutes.
In a large saute pan, heat the olive oil over medium heat and add the onions. Cook the onions until they start to become translucent, about 3 minutes. Add the ground beef and cook, chopping up the meat as it cooks, until fully browned. Add about 1 tsp of salt and 1/2 tsp pepper while cooking the meat. Add the carrots and minced garlic and cook 1 minute until garlic becomes fragrant. Make a hole in center of meat and add tomato paste, stirring it into the meat, cooking about 1 minute. Slowly add the port and cook until the liquid is almost evaporated, about 2 minutes. Sprinkle flour over the meat mixture and cook, stirring it in about 1-2 minutes. Stir in the beef broth and Worcestershire and bring to a simmer, cooking until the mixture thickens. Stir in the peas and remove from heat. Taste and add more salt and pepper if needed.
Pour meat mixture into prepared pan. Pour potato (or cauliflower) mixture on top of the meat and with a spatula smooth the top being sure to cover all the meat. Sprinkle top with paprika if using. Dot the top with pats of butter.
Bake for 20-25 minutes until it is bubbling and top starts to brown. Remove from oven and let sit 10-15 minutes before serving. Top with parsley if using.
Enjoy!