Polynucleotide phosphorylase (PNPase) catalyzes stepwise phosphorolysis of the 3′-terminal phosphodiesters of RNA chains to yield nucleoside diphosphate products. In the reverse reaction, PNPase acts as a polymerase, using NDPs as substrates to add NMPs to the 3′-OH terminus of RNA chains while expelling inorganic phosphate. The apparent essentiality of PNPase for growth of M. tuberculosis militates for mycobacterial PNPase as a potential drug target. A cryo-EM structure of Mycobacterium smegmatis PNPase (MsmPNPase) reveals a characteristic ring-shaped homotrimer in which each protomer consists of two RNase PH-like domains and an intervening α-helical module on the inferior surface of the ring. The carboxy-terminal KH and S1 domains, which impart RNA specificity to MsmPNPase, are on the opposite face of the core ring and are conformationally mobile. Single particle reconstructions of MsmPNPase in the act of poly(A) synthesis highlight a 3′-terminal (rA)4 oligonucleotide and two magnesium ions in the active site and an adenine nucleobase in the central tunnel. We identify amino acids that engage the 3′ segment of the RNA chain (Phe68, Arg105, Arg112, Arg430, Arg431) and the two metal ions (Asp526, Asp532, Gln546, Asp548), and we infer those that bind inorganic phosphate (Thr470, Ser471, His435, Lys534). Alanine mutagenesis pinpointed RNA and phosphate contacts as essential (Arg105, Arg431, Lys534, Thr470 + Ser471), important (Arg112, Arg430), or unimportant (Phe68) for PNPase activity. Severe phosphorolysis and polymerase defects accompanying alanine mutations of the enzymic metal ligands suggest a two-metal mechanism of catalysis by MsmPNPase.