You can have THREE over-age players in an olympic team. Note that the other players don't need to be under 23, just being born in 1981 or after is enough.
And Ronaldo should've been red carded and kicked out of the tournament. I guess the ref was compensating when he sent off the other Portugese player towards the end of the game.
As for Ghana, don't forget that the last two olympics were won by Nigeria and Cameroon. What I don't understand is why are there only 3 European teams and 2 South Americans, yet there are 3 North American teams and 3 Asians in the torunament.