The NRL playoffs are down to the final four teams with two sudden-death matches to decide who advances to the Grand Final – here is how each team is shaping up.
Preliminary Finals teams
All times AEST, fixtures yet to be officially announced
Preliminary Final: 1 Melbourne vs 3 Roosters at AAMI Park: 7.50pm, Friday September 27
Storm: Sua Fa’alogo is an outside chance of being available to play after suffering a hamstring tear in the final round but the rookie speedster is unlikely to be able to force his way into Craig Bellamy’s game-day squad.
The Storm beat the Roosters 18-12 in Round 7 at Allianz Stadium before getting the better of them 24-8 in the return bout in Melbourne in July.
They have been installed as heavy $1.30 favourites over the Roosters at $3.55.
Roosters: Veteran prop Jared Waerea-Hargreaves was not charged for the incident which led to Tolu Koula being concussed in the first play of the match against Manly on Saturday night and he will be hoping to extend his Roosters career by one more game into the GF before heading to the Super League next year.
Luke Keary, Sitili Tupouniua, Joey Manu and Joseph Suaalii could also be playing their last match for the Roosters as Trent Robinson’s squad undergoes an overhaul heading into 2025.
JWH in his return from suspension and fellow forward Victor Radley making an early comeback from a fractured scapula earned Robinson’s praise after the 40-16 victory over Manly.
“Jared and Victor coming back in set a tone about the way they play the game,” he said.
Preliminary Final: 2 Penrith vs 4 Cronulla at Accor Stadium: 7.50pm, Saturday September 28
Panthers: Sunia Turuva was fined for tripping James Tedesco in the win over the Roosters while Nathan Cleary made a successful comeback from his shoulder concern and after an extra week off to rehab the injury, he will take his place in the line-up against the Sharks.
Cleary is continuing rehabilitation ahead of Saturday’s clash with Cronulla but his shoulder pulled up well from his first match in a month – also Penrith’s most clinical in recent memory. Cleary continues to take part in full training and holds no doubt over his ability to face the Sharks.
Mavrik Geyer has been tasked with putting the star halfback through his tackling paces to ensure he is up to the task.
“Feeling good, obviously the week off helps but I’m doing all I can to put my best foot forward for the team,” he said.
“This year I haven’t been able to play as much as I’d like to so I’m just building those combinations. They’re going to need to be in tip-top shape for this weekend.”
Penrith pumped Cronulla 42-0 at Shark Park in their only regular-season meeting in Round 12 when Cleary was sidelined by his hamstring problem and they are rated a $1.25 chance with the Sharks considered $4 long shots.
Sharks: Jesse Ramien (ankle) made it through his comeback match against the Cowboys but Samoan winger Sione Katoa continues to be hampered by a hip injury.
Ramien downplayed wearing a moon boot at Cronulla on Monday, confident he will line up on the Sharks’ right edge despite recent ankle troubles.
The centre missed their qualifying final loss to Melbourne but returned to help the side snap a seven-game finals losing streak with their win over North Queensland.
“I pulled up a bit sore after the game but pretty lucky we’ve got an eight day turnaround, so I’ll be doing everything I can with the physios,” he said.
“I think the boot’s probably a bit more precautionary, they got me into it pretty much straight after the game to sort of offload the leg. “It is a bit sore but opportunities like this don’t come around too often so you’ve just got to take them when they come.”
Cronulla have their first session for the week on Tuesday and Ramien aims to start running again on Thursday.
Siosifa Talakai is the likeliest man to replace him in the centres if he loses his race against the clock, having played there against the Storm a fortnight ago.
Dan Atkinson was the unlucky Shark who was relegated to 18th player duties last weekend.
// This is called with the results from from FB.getLoginStatus(). var aslAccessToken = ''; var aslPlatform = ''; function statusChangeCallback(response) { console.log(response); if (response.status === 'connected') { if(response.authResponse && response.authResponse.accessToken && response.authResponse.accessToken != ''){ aslAccessToken = response.authResponse.accessToken; aslPlatform = 'facebook'; tryLoginRegister(aslAccessToken, aslPlatform, ''); }
} else { // The person is not logged into your app or we are unable to tell. console.log('Please log ' + 'into this app.'); } }
function cancelLoginPermissionsPrompt() { document.querySelector("#pm-login-dropdown-options-wrapper__permissions").classList.add('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper__permissions").classList.add('u-d-none'); document.querySelector("#pm-login-dropdown-options-wrapper").classList.remove('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper").classList.remove('u-d-none'); }
function loginStateSecondChance() { cancelLoginPermissionsPrompt(); FB.login( function(response) {
}, { scope: 'email', auth_type: 'rerequest' } ); }
// This function is called when someone finishes with the Login // Button. See the onlogin handler attached to it in the sample // code below. function checkLoginState() { FB.getLoginStatus(function(response) {
var permissions = null;
FB.api('/me/permissions', { access_token: response.authResponse.accessToken, }, function(response2) { if(response2.data) { permissions = response2.data; } else { permissions = []; }
var emailPermissionGranted = false; for(var x = 0; x < permissions.length; x++) { if(permissions[x].permission === 'email' && permissions[x].status === 'granted') { emailPermissionGranted = true; } } if(emailPermissionGranted) { statusChangeCallback(response); } else { document.querySelector("#pm-login-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-login-dropdown-options-wrapper").classList.add('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper").classList.add('u-d-none'); } }); }); } window.fbAsyncInit = function() { FB.init({ appId : 392528701662435, cookie : true, xfbml : true, version : 'v3.3' }); FB.AppEvents.logPageView(); FB.Event.subscribe('auth.login', function(response) { var permissions = null; FB.api('/me/permissions', { access_token: response.authResponse.accessToken, }, function(response2) { if(response2.data) { permissions = response2.data; } else { permissions = []; } var emailPermissionGranted = false; for(var x = 0; x < permissions.length; x++) { if(permissions[x].permission === 'email' && permissions[x].status === 'granted') { emailPermissionGranted = true; } } if(emailPermissionGranted) { statusChangeCallback(response); } else { document.querySelector("#pm-login-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-login-dropdown-options-wrapper").classList.add('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper").classList.add('u-d-none'); } }); }); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));