Goals in each half from Kevin De Bruyne and Andre Schurrle set up a clash against Real Madrid on Wednesday.
Defender Branislav Ivanovic was at the heart of things in the first half of an entertaining game which contained plenty of chances for the Blues.
The right-back showed good skill in the fourth minute to flick De Bruyne’s cross goalwards, but Milan goalkeeper Christian Abbiati saved well at his near post.
The Serbian headed an Oscar free-kick wide eight minutes later and was then booked for a foul on Mario Balotelli, before De Bruyne saw a 19th-minute effort ruled out for offisde.
Ivanovic produced a crucial intervention in the 26th minute, clearing before former Manchester City striker Balotelli could pounce after Blues goalkeeper Petr Cech could only parry a Sulley Muntari shot.
Oscar fired just wide shortly before De Bruyne opened the scoring in the 29th minute, rounding off a neat passing move by taking a pass from Eden Hazard and sidefooting home from 16 yards.
The chances continued for the Blues in a second half which again saw boss Jose Mourinho take the opportunity to use his entire squad.
John Terry volleyed wide and Juan Mata saw a low shot saved midway through the second half, before the Spaniard curled a free-kick over.
Antonio Nocerino headed wide at the other end before Schurrle shot just over after patient approach play from Victor Moses and Fernando Torres.
After Ramires had unselfishly tried to set up Romelu Lukaku in injury time, Chelsea got their second goal when Schurrle impressively volleyed home from 15 yards after receiving the ball from Moses.
The final against Real, managed last season by Mourinho, takes place at the same venue on Wednesday.