The halfling's Lucky trait deals with the die roll (PHB, p. 28):
When you roll a 1 on an attack roll, ability check, or saving throw, you can reroll the die and must use the new roll.
And so does Advantage/Disadvantage, since it refers to the same trait (PHB, p. 173):
For example, if a halfling has advantage on an ability check and rolls a 1 and a 13, the halfling could use the Lucky trait to reroll the 1.
The Divination wizard's Portent feature, on the other hand, deals with the check as a whole:
You can replace any attack roll, saving throw, or ability check ... with one of these foretelling rolls.
And here comes the interesting part - the three emphasized terms are only mentioned in rules as actions, not numbers:
The description of attack rolls (PHB, p. 194):
To make an attack roll, roll a d20 and add the appropriate modifiers.
If the total of the roll plus modifiers equals or exceeds the
target’s Armor Class (AC), the attack hits.
Saving throws (PHB, p. 179):
To make a saving throw, roll a d20 and add the appropriate ability
modifier. [...]
A saving throw can be modified by a situational bonus or penalty [...]
[...] proficiency in a saving throw lets a character add his or her
proficiency bonus to saving throws made using a particular ability
score. [...]
And ability checks (PHB, p. 171):
To make an ability check, roll a d20 and add the relevant ability
modifier. As with other d20 rolls, apply bonuses and penalties, and
compare the total to the DC.
All three go the standard way:
- Roll a d20, get a number
- In case of (dis-)advantage: roll another d20, get a new number (or
keep the old)
- Add bonuses/penalties, get the final number
- Compare the final number with the AC/DC and get the final
success/failure answer
From the strict RAW reading of Portent, we have to replace steps 1–4 (the whole check) with a number (foretelling roll), which makes no sense, as the result has to be boolean – success/failure.
If we loosen the restrictions, the logical thing to say would be "In the context of Portent, attack roll/saving throw/ability check is the number to be compared with the AC/DC" (i.e. the result of Step 3 above). In this interpretation "You must choose to do so before the roll" means that the decision is made before Step 1 and therefore no actual die roll happens. The modifiers are applied to the foretold roll as normal. This interpretation is reinforced by an unofficial tweet from March 2015 by rules designer Jeremy Crawford:
The portent die is intended to replace a d20 roll only, not any modifiers applied to it.
This result is Rules As Intended as well; the whole point is that the character knows in advance what is going to happen.
The result of a roll is not determined until the DM says what the result is, even in the case of a 1 or 20. There are cases, such as attacking an illusion or something immune to that damage type, wherein the DM lets the player roll just to hear the dice clatter.
Best Answer
There are a few ways to do this and I'm going to separate it into things that are available at level one, then go into options for later levels.
Level 1 - Character Creation
You've already named them: Be a Halfling (Lucky racial trait) or take the Lucky feat (variant human). Both of these options apply to Saving Throws, Ability Checks, and Attack Rolls (and the Lucky feat also applies to attacks against you).
Higher Levels - Class Independent
Elven Accuracy allows you to reroll Dexterity, Intelligence, Wisdom, or Charisma based Attack Rolls when you already have advantage. Very situational, but an option.
And it's worth noting that if you didn't take the Lucky feat at as your Variant Human feat, you can take it later on.
Higher Levels - Class Dependent and Multiclassing
With only two levels in Wizard, you can gain access to the Portent ability from the School of Divination (yes, I know you mentioned it, already). This isn't a proper reroll, but it replaces a roll with a value, which is spiritually similar. This gets an upgrade at level 14 to three uses.
Rogues have a handful of abilities that work similar to Portent, in that they allow you to set a static roll amount. Reliable Talent at level 11 makes your minimum roll a 10 for proficient Ability Checks; Stroke of Luck at level 20 allows you to auto hit or treat an Ability Check as a 20; The Swashbuckler subclass let's you reroll a missed attack, with advantage, no less.
Fighters gain access to Indomitable at level 9 (upgrades at levels 13 and 17), which allows them reroll failed Saving Throws.
Barbarian (Zealot) gains Fanatical Focus at level 6, which also allows rerolling a failed save. And Indomitable Might at level 18 replaces a roll lower than the Barbarian's Strength score.
Monk Diamond Soul (level 14) allows you to spend a ki point and reroll failed saving throws.
Spells
Wish can force a reroll of any roll made within the last round (including your last turn).
Glibness Allows you to replace any Charisma Check with a roll of 15. (Thanks, Patrick)
Items (Magical or otherwise)
The Luck Blade allows one to reroll one attack roll, ability check, or saving throw, once per day. Sure, it's a legendary item, but it's an option.
Ring of Evasion (only a Rare item!) allows you to expend a charge to Succeed on a Dexterity Saving Throw that you had failed, as a reaction.
Dragon Masks (Legendary) allow you to succeed a failed saving throw once per day.
Clockwork Amulet is a common item that allows you to take forgo rolling an Attack Roll and instead use a ten, once per day. (thanks Tiggerous)