One major problem of cross-layer control algorithms in multi-hop wireless networks is that they lead to large end-to-end delays. Recently there have been many studies devoted to solving the problem to guarantee order-optimal per-flow delay. However, these approaches also bring the adverse effect of sacrificing a lot of network utility. In this paper, we solve the large-delay problem without sacrificing network utility. We take a fundamentally different approach of delay differentiation, which is based on the observation that flows in a network usually have different requirements for end-to-end delay. We propose a novel joint rate control, routing and scheduling algorithm called CLC-DD, which ensures that the flow delays are proportional to certain pre-specified delay priority parameters. By adjusting delay priority parameters, the end-to-end delays of preferential flows achieved by CLC-DD can be as small as those achieved by delay-order-optimal algorithms. In contrast to high network utility loss in previous approaches, we prove that our approach achieves maximum network utility. Furthermore, we incorporate opportunistic routing into the cross-layer design framework to improve network performance under the environment of dynamic wireless channels.