Estabas cerca
SELECT order_id
FROM orders
WHERE product_id in (222,555)
GROUP BY order_id
HAVING COUNT(DISTINCT product_id) = 2
Con respecto a su pregunta "por curiosidad" en álgebra relacional, esto se logra simplemente con división . AFAIK ningún RDBMS ha implementado ninguna extensión que haga esto tan simple en SQL.