Firth grinds out win over Shelley