What you describe is not correct. Kimi loosed time to Bottas and Riccardo because of the back markers and racing in dirty air from lap 25 and when he managed to overtake back markers he was faster then Bottas and Daniel and cap did grow. When kimi made hes pit stop so did also back markers ahead of him which made it possible to Sebastian race in clean air and over cut Kimi.
Vettel didn't earn victory he was given it from the reds or perhaps he just got lucky.
What I described is perfectly correct and backed by numbers. Lap 22 through to lap 27, Bottas was consistently faster than Kimi. This was not one off issues with backmakers. Both drivers were consistent and trended with each other, Kimi was in the low 1:17s, whilst Bottas was in the mid 1:16s. As they got closer to lap 27, Kimi went up to high 1:17s and Bottas went up to low 1:17s. They were both a little slower, but Bottas was still closing on Kimi. If it was traffic it was effecting them the same as they trended with each other. The upward trend in laptimes is expected due to tyre wear.
There is no denying that the backmarkers that Kimi met after his stop were not ideal for him. However, the gap between Bottas and Kimi was dropping (this is a fact, you cannot deny it - the numbers do not lie), Bottas was closing for the lead. With Kimis times trending upward (he went from 1:16.8 down to a 17.6, almost a full second lost in one lap), and Bottas on fresh tyres, the most probably outcome was for Bottas to jump Kimi in the stops. At the same time, Riccardo was down to 1:16.0, 1.6 seconds faster than Kimi. If Kimi had been left out a couple of more laps, he'd have lost the spot to Riccardo. Ricardo showed bursts of speed between lap 23 and 27 and was the fastest car on the circuit. He then picked up the pace again on lap 30 and was miles faster than all the cars in front. It was clear to everyone watching the data that Riccardo was on course to easily jump Bottas, but also take a stab at Kimi.
At this point, Kimis lack of speed was going to cost him the race and he had to be pitted to cover off the faster cars. These cars were significantly faster at this point of the race, this simply cannot be disputed. Those faster cars were also about to be given fresh tyres, so Ferrari did the 100% correct thing to make sure that they kept Kimi ahead of these cars, and it worked.
What did not play into Kimis hands is Vettel immediately dropped his times down into 1:15.2, giving him a massive advantage. This was a laptime on old tyres that Kimi wasn't even able to match on his brand new tyres. That is why Vettel jumped Kimi - because he had speed to spare whilst Kimi did.
Cold hard fact is Kimi wasn't fast when he needed to be, which forced Ferrari to cover the faster cars behind. This left Kimi open to be exploited by the extra speed Vettel had in reserve. If you say Vettel didn't earn the victory, fine - Kimi lost it. If Kimi could do the 1:15s on old tyres like Sebastian could, then they wouldn't have needed to cover off Bottas. They were forced into it because Kimi wasn't fast enough and giving away time which would've cost both of them the race. The numbers don't lie. Graphs are awesome. Data is great.
Edit: Also note that Kimis in lap was 1.6 seconds slower than Vettel. Kimis outlap was 9 tenths slower than Vettel. Kimi lost 2.5 seconds in just the in and out laps. Vettel was within that time of Kimi before the stops anyway.