Rinse and scrub the carrots and potatoes well, then peel the potatoes and carrots and reserve the peels for later. Cut the carrots into 1/2” pieces and the potatoes into 1” pieces. Transfer to a large pot, wok, or dutch oven that has a lid.
Add the beef stock to the pot with the vegetables and bring to a boil over high heat. Reduce heat to low, cover, and simmer until the vegetables are tender throughout (this will only take around 3-5 minutes, do not overcook!) When the vegetables are tender, set a colander into a large bowl and strain off the veggies from the stock to separate. Set veggies and stock aside, and return the pot to the stovetop.
In the same large pot, combine the butter, oil, onion, and garlic over medium heat. Cook, stirring occasionally, until just translucent, about 5 minutes. Add the ginger and lemongrass and cook, stirring, about 1 minute. Sprinkle the flour, garam masala, salt, and curry powder over the mixture and cook, while stirring, about 1 minute. (Don’t worry if flour sticks to the bottom of the pan, it will stir off once the beef stock is added.) Stir in the ketchup and continue to cook 3 minutes more.
Add the reserved stock, reserved vegetable peels, apple, and soy sauce to the pot and bring to a boil over high heat. Reduce heat and maintain a high simmer uncovered for 20 minutes, or until thickened, stirring occasionally.
Once thickened, set the colander into the large bowl once more and strain the solids off from the curry, pressing out liquid with a spoon. Return the curry to the pot and discard the solids. (At this point the curry can be simmered and reduced/thickened further if you prefer.) Add the reserved carrots and potatoes to the curry and cook and bring to a simmer. Cook until warmed through, about 10 minutes. Serve over rice.