Why, lots of places!
Ancient historians often recorded the great or significant battles of their cultures, based on personal experience, interviews with the survivors, or the accounts handed down to them. The Greek Herodotus (known as the "Father of History", and very much in the running for the first historian) recorded the events of the Greco-Persian war in his Historia (Which translates as Enquiry, and is the source of our word History). Thucydides recorded the events of the Peloponnesian War, parts of which he served in and whose participants got to interview. Great figures, such as Alexander the Great for one, employed professional historians to follow them around and record their great deeds, much like a precursor to the modern press corp, or PR agency.
However, Herodotus was known by two names - both the Father of History, and the Father of Lies. He, like most ancient historians, was well known to exaggerate, inflate, misunderstand or straight-up invent details. We thus have to take practically all accounts with a grain of salt, and try to compare with other available sources.
Another, related source is accounts from the leaders of the battles themselves. A number of prominent generals or kings wrote their own memoirs, almost always to add prestige to their name and make themselves look good - examples of these are Ptolemy, Alexander's general and later ruler of Egypt (whose memoirs have been lost, but were used by later, but ancient historians such as the Romans Plutarch and Arrian), and Julius Caesar, whose accounts of his campaigns in Gaul do still exist!
A further related point - administrative documents, when they exist, can record details. For example, astrological recordings from Babylon in the Hellenistic period occasionally make reference to the wars and civil wars of the ruling Seleucid kings.
Another source, always useful, are monuments and inscriptions. In the ancient world, when you won a great victory, it was very much in vogue to brag about it on a mighty big statue, temple, column, arch or tablet, for all to read. While these are generally total propaganda, and thus need to be taken with a massive dose of salt, they are useful sources for the fact that they tend to survive to the present day better than books and scrolls.
A further source - entertainment! Poems, songs, plays and such, while fiction, often reference the major events of their times, and provide a useful glimpse. The Greek playwrite Aeschylus, for example, wrote a fictionalised version of the aforementioned Persian war called "The Persians", which while not exactly a solid historical document, can be used to gleam some details of the battles it references.
And of course - Archaeology! When you got thousands of people stabbing, battering, clattering and shooting each other in a close space, they're going to leave behind bones, weapons, armour, money, all sorts of things. This evidence can be uncovered and studied to get an idea as to what went on, like a crime scene on a bigger scale.
So, there are plenty of source for ancient battles - with the caveat, of course, that not all battles were significant enough to record, not all cultures had large literate populations to write about them, not all writings survive to us today, and not all monuments survive the test of time. These sources invariably carry with them each their own biases and errors, so the best we can do is compare them with as many other sources as we can, alongside archaeological evidence, to get the clearest image possible.
Reconstructing ancient battles often tends to be a game of careful suppositions and vague approximations. We do the best we can with the sources we have, but your suspicion is largely correct: it is very rare that we can trust any one source, it's even rarer to have more than a few equally dubious sources. In many cases, sources disagree on what happened, sometimes quite drastically. Some writers may not have understood their sources. Some may have received conflicting reports. And in quite a few cases, the original sources describing a battle have been lost, leaving us to rely on later sources who wrote based on the original ones, leaving us with a rather risky 2000 year long game of telephone. However, for the most part, they're the only thing we have.
Archaeology helps far less often than we'd like it to, since ancient battlefields are very difficult to find. Archaeology is good at finding settlements, or army camps, where people live and bury eachother and throw away waste for generations. It's bad at finding battlefields where people fought for an afternoon. We do sometimes find them, which is always very exciting, but even when we do it tends to be difficult to match the things we find in the ground to the words passed down to us by ancient historians. What the archaeological record does do is provide illustration and general background information. It might tell us, for example, if the equipment we find matches that which our sources describe. It might give some vague indication of numbers and battlefield size, and let us match that up to what the records tell us.
In one of the follow-up questions you asked about the battle of Zama, so try and let me use that as an example to try and illustrate how an ancient battle might be reconstructed.
On Sources
For the battle of Zama, our main written sources are Polybius and Livy, who each have written about 2000 words on the battle. (Including lengthy pre-battle speeches by the generals.) There's also Appian, but his account mostly revolves around Scipio and Hannibal fighting a duel and appears to be mostly fantasy, so most historians ignore him.
Polybius was a technical-minded historian who took great pride in his rigour, and lived reasonably closely to the events in question. (He was born just a few years after the battle, most likely.) He was an eye-witness of the siege of Numantia and the third Punic War, including the sack of Carthage, and was an intimate of Scipio Aemilianus, the Roman commander at those wars and the (adopted) grandson of the more famous Africanus. On the plus side, this means Polybius knew what he was talking about, and had access to many eye-witnesses as well as whatever records the family kept. On the down side, his fate was so intimately intertwined with that of the Cornelii Scipiones, that we can't exactly trust him to be unbiased. Still, he's one of the best sources of information we have for warfare in antiquity, and one of the main reasons we know as much about the Punic Wars as we do.
Livy wrote much later, in Augustus' day, and his writings have a strongly nationalistic bend. He's still a very important source, but his earlier books include a lot of myth, and his later works have to be read quite critically as well. Appian was even later, writing in the later 1st century A.D., and I've already mentioned the problems with his account. Neither Appian nor Livy had the kind of personal experience with battle, or access to eye-witnesses and relatives of eye-witnesses, that Polybius did.
On the Battlefield
I can be brief here: We have not found the battlefield, so archaeology is silent. We don't even know where the battle took place, but since it appears to have taken place on a flat plain, this may not matter too much for the reconstruction of events.
In the end, all we know is that the battle took place a few miles from Carthage.
On the size of the armies
And here the really fun bit starts. To begin with, neither Livy nor Polybius mention how big Scipio's army was at all. Livy does mention the size of the army Scipio took to Africa the previous year:
As to the number of troops put on board there is considerable divergence among the authorities. I find that some state it to have amounted to 10,000 infantry and 2200 cavalry; others give 16,000 infantry and 1600 cavalry; others again double this estimate and put the total of infantry and cavalry at 32,000 men. Some writers give no definite number, and in a matter so uncertain I prefer to include myself amongst them. Coelius declines, it is true, to give any definite number, but he exaggerates to such an extent as to give the impression of a countless multitude; the very birds, he says, fell to the ground stunned by the shouting of the soldiers, and such a mighty host embarked that it seemed as though there was not a single man left in either Italy or Sicily. — Titus Livius, History of Rome 29.25
As you can see, even in Livy's day the issue was confused. Modern day historians tend to pick and choose between the numbers in accordance with their best judgement. Some, indeed, have a habit of cherry-picking say the lowest (or highest) number of infantry from one source, and the lowest (or highest) number of cavalry from another, because they think it sounds more plausible. A rather dubious practice, as far as I'm concerned.
So, historians kind of have to look at Appian's figures by default, even though there's no good reason to assume his numbers are any more reliable than his account of events. Anyway, he claims there were 23,000 Roman foot and 1,500 Roman horse, which in itself seems plausible enough, though it would contradict two out of three of Livy's figures for the total size of the Roman expeditionary force.
In addition to this, both Polybius and Livy mention the Numidian king Masinissa arriving to help the Romans with 6,000 foot and 4,000 horse. Which seems reasonable enough, and it has two sources agreeing with eachother which is always lovely. (Unless it turns out they were copying eachother, in which case what first looks like corroboration turns out to be just an echo.)
Most scholars take Roman army to be the 25,000 men Appian mentions, with the 10,000 Numidians from Polybius and Livy added in, for a total of roughly 35,000 men. Not a completely implausible number on the face of it, but it's an example of this very dangerous trend of cherry-picking sources I mentioned above, since Appian only mentions Numidian cavalry in his account.
For Hannibal's forces, our records are even vaguer. Appian gives a total of 50,000 men, but historians are less inclined to accept this figure than they are the Roman. Polybius only mentions that the first Carthaginian line (out of 3) was 12,000 strong, and that there were 2,000 Numidian horse on the Carthaginian side. (But that wasn't their only cavalry.) Livy actually claims there was an entire force of 4,000 Macedonians in the second Carthaginian line, which has to be propagandistic fantasy. (Rome would soon wage several wars against Macedon.)
Modern scholars generally agree on 4,000 Carthaginian cavalry (crucially, less than the Romans had) and argue wildly about the number of Carthaginian infantry. Many just triple the number Polybius gives for the first line, to get to 36,000 infantry. Some, such as Goldsworthy or Lancel, argue that the third line must have been stronger, since the sources later claim that this third line was equal to the entire Roman infantry force. You'd then arrive at some 40-45,000 Carthaginian infantry, which could bring the total quite close to Appian's.
All in all it's safe to say that the Roman army at Zama probably had less infantry but considerably more cavalry than the Carthaginian. But there remains a lot of guesswork involved.
[1/2]
Where do you find the books, tablets, and etc. that tell of ancient battles? I've always wondered.