Teplá pramení v nadmořské výšce okolo 790 m na rašeliništních loukách, severně od Podhorního vrchu, asi 3 kilometry severovýchodně od Mariánských Lázních. Prameniště Teplé je přírodní rezervací. Zpočátku teče jako potok východním až jihovýchodním směrem. Napájí vodní nádrž Podhora, která leží v nadmořské výšce 695 m a je zdrojem pitné vody pro Mariánské Lázně. Napájí velký Betlémský rybník, který je rekreační oblastí. Asi po 15 kilometrech toku se stáčí severním směrem a napájí protáhlý Starý rybník. Míjí kláštwr Teplá a protéká městem Teplá, ve kterém napájí několik dalších menších rybníků. Poté teče podél zelezniční trati Karlovi Vary - Mariánské Lázně.
Od soutoku s Otročínským potokem se rozkládá rezervace Údolí Teplé. Zde je kromě trati vedena podél řeky i silnice ll/230. Po produ leží na řece i město Bečov na Teplou se stejnojmeným hradem a zámkem.
Dále řeka pokračuje až do Karlových Varů, proteká centrem města, kde se vlévá do řeky Ohře.
Délka toku je 65,1 km.