Blast2GO is a good and popular option as suggested by Chirag. It's a paid commercial software. An open source alternative would be to perform standalone blastp -> get the description. Use the hit accession to derive the GO ontologies using UniprotKb by retrieving the UniprotKB ids from GI identifiers. You can get a lot of information including the GO annotations and the EC numbers (Enzyme Codes). Additionally, for pathway analysis you can use the KAAS server.