Thought I would chime in on this. I can usually learn a song playable and close by listening to it two times. I do have many years of playing so I can pick up what someone is playing quickly.
First time through, use your bass and listen to the progression changes for the different progressions ( intro, verse, chorus, lead...)
Second, playing along with the recording, making not of how long each of those sections are so you know the song structure.
Then is string time, just playing it over and over. When you think you know it, listen to the little things like riffs off the chords, transitions between one section and the next, and try to listen for things you were just doing wrong. You would be surprised how many players, all the other instruments pick up habits in songs and end up playing them wrong cause they just dont bother to go back and listen again.
Knowing music theory helps you a lot to understand where riffs go. It all comes down to string time. You can play once a month for 30 years, but the kid playing 4 hours a day will blow you away in 3 months.
Also, if you can somewhat play a song, you just need to practice it. Do it without the recording and use a click track. Riffs you cant keep up with, you should get some software to slow the song down and increase the tempo over time till you can play faster, it makes it easier to play it at the regular speed. Make a note if the tempo of the song as well.