Bring a large pot of water to a boil. Meanwhile, fill a large bowl with ice water. Using a paring knife, core each tomato and score a small X in the bottom.
In batches, carefully add the tomatoes to the boiling water and leave in just until the skins begin to split, 15 to 30 seconds, then transfer to the ice bath.
Peel the tomatoes and discard the skins. Cut the tomatoes in half and squeeze out and discard the seeds. Roughly chop.
Heat the oil in a large pot over medium heat. Add the onion, garlic, 1 teaspoon salt, and 1/2 teaspoon pepper and cook, stirring occasionally, until the onion is tender, 5 to 6 minutes. Add the tomato paste and tomatoes and cook, stirring occasionally, until the sauce has thickened, about 1 hour. Stir in the basil. Use the sauce immediately or freeze it for up to 3 months.