Its good to see the responses. Thanks for that. However i've decided to step away for a few days to "chill out", so i might not respond for a few days. But at least i owe you a response...
Perhaps the lm386 is the solution. I don't know. I've tried with the tda7052a (which i heard is a similar amp ic with internal caps) and that didn't solve the 'starvation' issue. With 'starvation' i mean that so much current goes from the battery to the little speaker that my display backlight and led indicators are dimmed. In fact, seen on a scope, it pulls the 5v below 2.8v at which my 328p is saying "no more, i'm off..". I know the circuit is otherwise fine because if i disconnect a single lead from the speaker everything works as it should.
The phone works on a 1400 mAh battery pack and now uses only 45mA on idle. The sound wave is a full 0-5v square wave generated by the Arduino tone() function.
The speaker is very small. It is the original 'handsfree' speaker of the phone that has been in there since the 90's and should be able to provide sufficient noise. Since it mounts in the plastic handset i'm not keen on replacing it.
My feeling is that it should at least make as much noise as a little piezo speaker. That is, i should hear it ringing across the room.