I don't like 9 ... f6.
How about 9 ... de with the lines:
A) 10 N:e7+ Q:e7
11 B:e7 ed
12 B:f8 K:f8
13 N:d4
and black has two pieces for R+P
B) 10 B:e7 ed
11 B:d8 R:d8
12 N:d4 Na6
13 B:a6 ba
and while it will take black a while to organize his pieces, (and has to keep a close eye on tactical possibilities for those pesky white knights), he's up a piece for a pawn and has the bishop pair
C) 10 Qb4 Nc6
D) 10 Q:e5 N:e5
11 N:e7+ Q:e7
12 B:e7 Re8
13 Bd6 Nbc6
and I don't see a way for white to exploit the back-rank
E) 10 Qd2 f6
and while white has better development and the initiative, I don't see anything immediate
These variations are all rather sharp, but when you play the Sicilian you have to accept the potential for sudden plunges into wild play!
Additionally, 20 ... f5 was a mistake. 20 ... Bh6 was better, even after 21 B:f6+ Kf8
Here is a game I played recently. Feel free to give me any advice. I start with the Sicilian and didn't know what i was doing, obviously. Another note is i used a database of master games to help with the opening, so the first 6 or 8 moves i had help with. Sorry i didn't download my comments, i had trouble:(