I think what you are looking for is more like:
SELECT * FROM (
(SELECT bID, Name, 'paid' AS status FROM directory WHERE Category = ? AND Link = 1 AND Active = 1)
UNION
(SELECT bID, Name, 'free' AS status FROM directory WHERE Category = ? AND Link = 0 AND Active = 1))
ORDER BY bID