In this paper we propose an end-to-end algorithm, called NUM-RS, for jointly selecting link transmission rates and source rates in a multi-hop multi-rate wireless network. Prior works on rate selection, including those that explicitly account for opportunistic reception, perform rate selection on a hop-by-hop basis, attempting to maximize the throughput on each link. Our algorithm leverages the Network Utility Maximization (NUM) framework, thus providing end-to-end semantics for rate selection and proportional fairness with low overhead. By using end-to-end semantics NUM-RS considers both source rates and congestion in the vicinity of links used by a flow when selecting link rates. Our results show that NUM-RS increasingly outperforms contemporary hop-by-hop rate selection schemes as the number of hops in the flows increase. For example, 20% and 50% of 8-hop flows exhibit performance gains of at least 36% and 15%, respectively, in terms of end-to-end throughput. In some cases, gains of up to 80% can be achieved.