Sydney Roosters' hopes of winning three NRL titles in a row are over after Canberra Raiders held on for a 22-18 victory in the semi-finals on Friday.

Trent Robinson's team were bidding to become the first to three-peat since the Parramatta Eels did so between 1981 and 1983, but they were rocked by the Raiders' rapid start at the Sydney Cricket Ground.

Josh Papalii, George Williams and Joseph Tapine all went over inside the opening 22 minutes as Canberra raced into a 16-0 lead.

James Tedesco scored two tries for the Roosters but the Raiders held on, avenging their 2019 Grand Final loss to book a preliminary final against Melbourne Storm next week.

Papalii powered over for the visitors' first try and was then heavily involved as Williams crossed, with Tapine's fine solo effort giving Canberra a comfortable cushion.

Tedesco finally got the Roosters on the board before the interval and Joseph Manu's converted try then brought them within four.

However, Tedesco somehow failed to deal with Williams' kick, allowing Jack Wighton to score a fourth Canberra try and that proved pivotal, despite Sydney's full-back going over again.