In a small saucepan over medium heat, melt the butter until foaming. Add the flour and cook, whisking constantly, until the raw flour smell cooks off and it gives off a faint, nutty scent - about 2-3 minutes.
Whisking constantly, slowly pour in the port and soy sauce. The roux will seize up and steam, but do not be alarmed.
When the alcoholic smell has dissipated (about 1 minute), stream in the chicken stock while whisking constantly to avoid lumps.
Tie thyme and sage springs together with some butcher's twine and add them to the pot. Bring the gravy to a gentle simmer, season generously with salt and pepper, reduce the heat to low and allow to simmer for 10-15 minutes to allow the herb flavour to infuse.
Taste to adjust for seasoning, adding more salt and pepper if needed. Remove the sage and thyme bundle and serve immediately.
Video
Notes
If you don't have port, use a full-bodied red wine such as shiraz or merlot. If you'd like to make this alcohol-free, substitute the port (or wine) with 15ml (1 tablespoon) of balsamic vinegar and follow the recipe as written.