From Lima, I decided to take a flight to Cusco. I visited Machu Picchu and continued my journey to Bolivia. From Cusco, I took an overnight bus to La Paz. It went via Puno, where we stopped for 3 hours (I took a half-day tour to Floating Islands), then continued to Copacabana after crossing the Peruvian/Bolivian border.
I used the Peru/Bolivia Hop company and was overall satisfied with the service. That is, however, my humble opinion. It was well organised and informed trip with many side options like vouchers and excursions.
From Cusco to Copacabana you have one PeruHop bus service and from Copacabana to La Paz another BoliviaHop service. They collaborate and the whole journey goes uninterrupted.